Nodes/ComfyTV/Video Rotate
ComfyUI Node

Video Rotate

Fix the sideways phone clip in one click

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Video Rotate
  • video
  • video
force_run_token0
project_id
parent_output_id0
rotate_deg0
flip_hfalse
flip_vfalse

The most boring video problem in existence: the clip came out sideways, or mirrored, and you just want it fixed. No AI required, no cleverness - that's Video Rotate. It's the node you reach for when a phone video loads at 90°, or when you need a mirrored take for a symmetric composition.

What it does

It re-encodes the clip on the server (PyAV / FFmpeg) and saves the corrected version as a COMFYTV_VIDEO snapshot. Rotation is strictly 90° multiples - 0, 90, 180, 270 - because the rotate_deg input steps in 90s. There's no arbitrary angle here; if you need a 12.7° straighten, that's not this node (Video Transform handles free rotation).

The controls:

  • rotate_deg - 0–270, step 90. 90° swings a landscape clip into portrait and vice versa.
  • flip_h - mirror left-to-right.
  • flip_v - mirror top-to-bottom.

Rotation and flips combine in a single pass, which is handy: a 90° rotation plus a flip fixes most "recorded in a mirror" situations. Note that a 90° or 270° rotation swaps the clip's width and height, so a following Video Resize is often part of the same chain.

The one gotcha

With all defaults - 0°, no flips - there's nothing to do, and the node just re-encodes the clip unchanged. It won't error like Video Speed does, but you also won't see a difference. Set at least one option. That's the only real trap.

Where it sits

It's a sibling of the other geometry tools: Video Crop for trimming edges after reorientation, Video Resize for setting a target size after a 90° swap. In the pack's canvas flow it's one of the "instant tools" - you can also do rotate/mirror in the browser on images, but for video this node is the way.

Install and quirks

Pack-standard install: git clone https://github.com/jtydhr88/ComfyTV into ComfyUI/custom_nodes, restart, under ComfyTV → Video. Media-processing stage, so no models, no GPU, and the only real dependency is PyAV being present in your ComfyUI environment (it usually is; pip install av if a node reports it missing).

Output is a COMFYTV_VIDEO snapshot, so crossing to native ComfyUI nodes means a ← ComfyTV Video Bridge. Inside the pack everything connects directly. Simple node, simple fix - and you'll be surprised how often you use it.

CategoryComfyTV/Video

Inputs (7)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
rotate_degINT00–270
flip_hBOOLEANfalse
flip_vBOOLEANfalse
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO