x=(iw-ow)/2 removes equal scaled width from both sides. It is balanced, not automatically correct.
LOCAL MEDIA / REAL 9:16 ENCODE
Which side survives the portrait crop?
Scale to cover a 360×640 frame, choose the source edge worth keeping, then verify the generated MP4 itself before it leaves your browser.
No source loaded
Focal anchor
scale=360:640:force_original_aspect_ratio=increase,crop=360:640:(iw-ow)/2:(ih-oh)/2,setsar=1
Runtime idle. Load the sample or a local clip.
LANDSCAPE IN / PORTRAIT OUT
The video file must change, not just the player.
The output stage unlocks only after FFmpeg writes a nonempty MP4 and the browser reads back 360×640 metadata.
DECODESCALECROPENCODEVERIFY
VERTICAL CLIP CROPPER / VERIFIED OUTPUT
VERTICAL MP4 READY
output360 × 640
duration2.00 s
bytes—
anchorCenter
Verified output is ready.
ENGINE IDLE0%
No FFmpeg job has run.
CROP GEOMETRY
Scale first. Choose the excess second.
x=iw-ow removes excess from the left and preserves the source's right edge.
A portrait player proves nothing. The generated MP4 must report 360×640 and the expected duration.
A narrow player means a vertical clip.No. Only the encoded media dimensions prove a real transformation.
Center crop is always neutral.No. It can remove an edge subject; focal anchoring is an editorial decision.