横長(16:9)の動画を縦長(9:16)にするには、はみ出す左右を切り落とすか、足りない上下を埋めるかのどちらかです。

左が 16:9 の元の映像、右が crop=ih*9/16:ih,scale=1080:1920 で 9:16 に切り出した結果です。左右が大きく切り落とされます。
素材: Tears of Steel (CC) Blender Foundation | mango.blender.org、CC BY 3.0。映画の1フレームを切り出し、フィルターで加工しています。
縦動画フォーマットの基本
| 項目 | 値 |
|---|---|
| アスペクト比 | 9:16 |
| 解像度(標準) | 1080×1920 px |
| 解像度(最小) | 540×960 px(TikTok のインフィード広告の条件) |
方法1: 中央クロップ(crop)
横長の映像の中央を、縦長のサイズで切り出します。被写体が画面の中央にある場合に向いています。
1920×1080 → 1080×1920 中央クロップ
まず高さが1920になるまで拡大し、その中央から幅1080を切り出します。
ffmpeg -i input.mp4 -vf "scale=-1:1920,crop=1080:1920:(iw-1080)/2:0" output_vertical.mp4
scale=-1:1920 の -1 は、縦横比を保つように幅を自動で決める指定です。
中央の正方形を切り出し、上下に黒帯を付ける
1920×1080 の動画の中央から 1080×1080 を切り出し、縦長の画面に収める例です。上下には黒い帯が付きます。
ffmpeg -i input.mp4 -vf "crop=1080:1080:(iw-1080)/2:(ih-1080)/2,scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(1080-iw)/2:(1920-ih)/2" output_vertical.mp4
方法2: 黒帯パディング(pad)
映像全体を縮小し、上下に黒い帯を足します。映像はすべて見えますが、帯が目立ちます。
横動画を縦フォーマットに黒帯付きで収める
ffmpeg -i input.mp4 -vf "scale=1080:-2,pad=1080:1920:0:(1920-ih)/2:black" output_padded.mp4
scale=1080:-2 で幅を1080に縮め、pad で高さ1920の画面の上下中央に置きます。
カラー背景でパディング
ffmpeg -i input.mp4 -vf "scale=1080:-2,pad=1080:1920:0:(1920-ih)/2:color=0x1a1a2e" output_padded_color.mp4
帯の色は、color=0x1a1a2e のように16進数のカラーコードで指定できます。
方法3: ぼかし背景パディング(推奨)
元の映像をぼかして背景にし、その上に元の映像を重ねます。黒い帯が出ないので、自然に見えます。
ffmpeg -i input.mp4 -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:3[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2[out]" -map "[out]" -map "0:a?" -c:v libx264 -b:v 8M -pix_fmt yuv420p -c:a copy output_blur_bg.mp4
-map "[out]" だけでは映像しか出力されないので、-map "0:a?" で音声も入れています(? は、音声がない動画でもエラーにしない指定です)。
-filter_complex の中では、次の処理をしています。
[bg]:元の映像を、縦横比を保ったまま1080×1920を覆う大きさに拡大し、はみ出した部分を切り落としてから、ぼかして背景にする[fg]:元の映像を、縦横比を保ったまま幅1080に縮小するoverlay:ぼかした背景の中央に[fg]を重ねる
方法4: 特定位置でのクロップ
被写体が中央にない場合は、切り出す位置をずらします。
下のコマンドの x は、scale=-1:1920 で拡大した後の画面での位置です(1920×1080 の素材なら、拡大後の幅は約 3413)。ブラウザで試すなら、動画クロップツールで上下左右から削る割合(%)を指定して切り出せます。
左側を優先してクロップ(x=0)
ffmpeg -i input.mp4 -vf "scale=-1:1920,crop=1080:1920:0:0" output_left.mp4
右側を優先してクロップ
ffmpeg -i input.mp4 -vf "scale=-1:1920,crop=1080:1920:iw-1080:0" output_right.mp4
iw-1080 は「幅から1080を引いた位置」で、右端に合わせる指定です。
任意のx座標でクロップ
ffmpeg -i input.mp4 -vf "scale=-1:1920,crop=1080:1920:300:0" output_custom.mp4
crop の3つ目の値(x)を変えると、切り出す位置が左右に動きます。
出力のサイズを確認する
書き出した動画の幅・高さと、ピクセルの縦横比(SAR)を ffprobe で確認します。1080,1920 に続く SAR が 1:1、N/A、または 10240:10239 のように 1:1 にごく近い値なら 9:16 です。
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,sample_aspect_ratio -of csv=p=0 output_vertical.mp4
SAR が 4:3 や 64:45 のときは、元の動画のピクセルが正方形ではありません(DVD や古いビデオカメラの映像など)。このままでは 9:16 で表示されないので、フィルタの先頭に scale=iw*sar:ih,setsar=1, を足し、ピクセルを正方形にしてから処理します。
音声を維持する
-vf を使うコマンドは、何も付けなくても音声が残ります(MP4 では AAC に変換されます)。音声を変換せずに残すなら -c:a copy、ビットレートを決めるなら -c:a aac -b:a 256k を付けます。-filter_complex で -map "[out]" を指定するコマンドは、-map "0:a?" も付けないと音声が入りません。
ffmpeg -i input.mp4 -vf "scale=-1:1920,crop=1080:1920:(iw-1080)/2:0" -c:v libx264 -b:v 8M -pix_fmt yuv420p -c:a aac -b:a 256k output_vertical.mp4
crop フィルタの基本構文
crop=w:h:x:y
| パラメータ | 説明 |
|---|---|
w |
切り出す幅 |
h |
切り出す高さ |
x |
切り出し開始位置(左から) |
y |
切り出し開始位置(上から) |
値には、iw(切り出す前の幅)や ih(切り出す前の高さ)などの変数を使えます。
関連記事
よくある質問
TikTok の推奨解像度は?
1080×1920(9:16)が最も無難です。アップロードした動画は TikTok 側で再エンコードされます。
横動画を縦に変換すると画質が落ちる?
1920×1080 の素材から 9:16 を切り出すと、使われるのは元の映像の幅 約 608 ピクセル分です。方法1のコマンドはこれを 1080×1920 に拡大するので、元の映像よりぼやけます。上下に黒い帯を付けて 9:16 にする方法はおすすめしません。視聴体験が悪くなるためです。
iPhone で撮った縦動画が横向きで再生される
iPhone は撮影時に、動画へ「回転メタデータ(向きの情報)」を書き込みます。この情報を読まないプレーヤーでは、横向きで再生されます。ffmpeg -i in.mov -c:v libx264 -c:a copy out.mp4 のように再エンコードすると、FFmpeg が回転メタデータに合わせて映像そのものを回転させます。そのため、どのプレーヤーでも縦向きになります。ここに transpose を足すと、二重に回転してしまいます。
YouTube Shorts と TikTok で別々に作るべき?
基本的には同じファイルで構いません。どちらも 1080×1920 が推奨で、違うのは長さの上限だけです。Shorts は最大3分です(2024年後半に60秒から延びました)。TikTok の上限は変わることがあるので、長い動画は投稿前に TikTok のヘルプで確認してください。