Shorty(ショーティー)

ffmpegでショート動画編集を自動化する量産コマンド完全ガイド

公開: 2026-07-08 約22分 ffmpegショート動画動画編集自動化
ffmpegでショート動画編集を自動化する量産コマンド完全ガイドのアイキャッチ画像

ffmpegでショート動画編集を自動化する実践ガイド。縦型9:16変換・字幕焼き込み・BGM合成・無音カット・一括バッチ処理まで、顔出しなしYouTube副業で量産するための動くコマンドを多数掲載します。

目次

「編集アプリで1本作るのに30分。これを毎日5本、しかも顔出しなしで量産したい」——この記事は、まさにその段階でつまずいた人のためのものです。結論から言うと、縦型9:16への変換・字幕の焼き込み・BGM合成・無音カット・複数本の一括処理まで、ffmpeg 1本でパイプライン化できます。マウス操作ゼロ、1本あたり数十秒。編集アプリが「1本を丁寧に作る」道具なら、ffmpeg は「同じ工程を100本に複製する」道具です。

競合の技術ブログは「縦型変換だけ」「字幕焼き込みだけ」と単機能で分断されていて、素材から投稿用ファイルまでを1本の流れとして繋いだ解説がほとんどありません。この記事では、顔出しなしYouTube Shorts副業で実際に量産している人の視点から、動く実コマンドを最低8本、コピペで試せる形で並べます。学習コストや向かないケースも正直に書くので、導入すべきか自分で判断できるはずです。

まず結論:ffmpeg でShorts量産が成立する理由と、向かない場面

ffmpeg はコマンドラインの動画処理ツールです。GUIがないぶん取っつきにくいですが、「同じ処理を引数を変えて何百回でも正確に繰り返せる」点が量産と決定的に相性がいい。編集アプリはプレビューを見ながら1本ずつ仕上げる設計なので、100本作れば100回同じ操作を手でやることになります。ffmpeg はその100回をループ1行に畳み込めます。

一方で、向かない場面もはっきりしています。サムネの微妙なトリミング、カットのタイミングを耳で合わせる細かい編集、テロップアニメの凝った演出——こうした「1本ごとに人間の判断が要る作業」はアプリの方が速い。ffmpeg が強いのは、テンプレートが固まった後の「複製フェーズ」です。だから現実的な運用は「構成はアプリや台本で固め、量産だけffmpegに任せる」ハイブリッドになります。台本設計はAI台本プロンプトの実例集が参考になります。

項目 編集アプリ (CapCut等) ffmpeg
1本目の作りやすさ ◎ プレビュー即確認 △ コマンド調整が必要
100本の量産 × 手作業100回 ◎ ループ1行
細かい演出・アニメ △ 苦手
定型処理の速度 ◎ 数十秒/本
学習コスト 中(数日)
ランニングコスト 無料〜有料 完全無料

準備:インストールと「壊れない」検証コマンド

Windows なら公式ビルド配布元 gyan.devffmpeg-release-full を落とし、bin フォルダを環境変数 PATH に通します。Mac は brew install ffmpeg、Ubuntu は sudo apt install ffmpeg です。字幕焼き込みには libass 同梱ビルドが必須なので、Windows は上記フルビルドを選んでください(最小ビルドだと subtitles フィルタで落ちます)。

インストール後、まず素材の中身を確認する癖をつけましょう。解像度・尺・回転メタデータを把握しないと変換設定を間違えます。

# バージョンとフィルタ対応の確認
ffmpeg -version
ffmpeg -filters | grep -E "subtitles|drawtext|ass"

# 素材の解像度・尺・回転情報を確認
ffprobe -v error -select_streams v:0 \
  -show_entries stream=width,height,r_frame_rate,duration \
  -show_entries stream_tags=rotate \
  -of default=noprint_wrappers=1 input.mp4

ffprobe で幅・高さが出ます。スマホ撮影素材は rotate=90 のメタデータで縦横が入れ替わって見えることがあるので要注意です。

コマンド①:横型16:9をShorts用の縦型9:16に変換する

Shorts の推奨解像度は 1080×1920(9:16)。横型素材を縦にする方法は2つあり、目的で使い分けます。

A. 上下を黒帯で埋める(レターボックス) — 元映像を全部見せたいとき。

ffmpeg -i input.mp4 -vf \
"scale=1080:-2:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1" \
-c:v libx264 -crf 20 -preset medium -c:a aac -b:a 128k output_vertical.mp4

scale=1080:-2 は幅1080に合わせ高さを自動計算(-2は2の倍数に丸める=エンコード要件)。pad で1080×1920のキャンバス中央に配置します。setsar=1 はピクセル比を正方形に固定し、再生環境での歪みを防ぐおまじないです。

B. 中央を切り抜いて全画面にする(クロップ) — 余白なしで迫力を出したいとき。被写体が中央にある素材向き。

ffmpeg -i input.mp4 -vf \
"scale=-2:1920,crop=1080:1920,setsar=1" \
-c:v libx264 -crf 20 -preset medium -c:a aac -b:a 128k output_crop.mp4

高さを1920に合わせて拡大し、中央から幅1080を切り出します。左右が見切れるので、テロップや重要被写体が端にある素材では A を選んでください。

回転メタデータの補正 — スマホ縦撮り素材が横向きに出る場合:

ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output_rotated.mp4

transpose=1 が時計回り90度、transpose=2 が反時計回りです。

コマンド②:字幕を焼き込む(subtitles と drawtext の使い分け)

「焼き込み(ハードサブ)」は映像に字幕を直接描画する方式で、どの再生環境でも必ず表示され、Shorts のように字幕前提の視聴で効きます。反面、後からOFFにできないのが唯一の弱点です。

SRTファイルを焼き込む基本形:

ffmpeg -i output_vertical.mp4 -vf "subtitles=subs.srt" \
-c:v libx264 -crf 20 -c:a copy output_subbed.mp4

これだと小さくて読みにくいので、スタイルを force_style で指定します。Shorts はスマホ縦画面。フォントは大きめ、白文字+黒縁取り、下寄せが定番です。

ffmpeg -i output_vertical.mp4 -vf \
"subtitles=subs.srt:force_style='FontName=Yu Gothic UI,Fontsize=18,\
PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,\
Outline=3,Shadow=1,Alignment=2,MarginV=220'" \
-c:v libx264 -crf 20 -c:a copy output_styled.mp4

ここで重要なのが MarginV=220。Shorts は画面下部にタイトル・ボタン等のUIが重なります。字幕を下ギリギリに置くとUIに隠れるので、下から一定量(220px前後)持ち上げてセーフゾーン内に収めます。競合記事がほぼ触れていないShorts特化のポイントです。色は &HAABBGGRR の順(AA=透明度00で不透明)で、青緑赤の順なので注意。

固定テキスト(チャンネル名・冒頭フックなど)は drawtext が手軽:

ffmpeg -i output_vertical.mp4 -vf \
"drawtext=text='続きは概要欄':fontfile='C\:/Windows/Fonts/YuGothB.ttc':\
fontsize=54:fontcolor=white:borderw=4:bordercolor=black:\
x=(w-text_w)/2:y=h*0.12" \
-c:v libx264 -crf 20 -c:a copy output_hook.mp4

Windowsで drawtext を使う際、フォントパスのコロンは C\:/Windows/... とエスケープが必要です。ここでハマる人が多いので覚えておいてください。日本語を焼くには日本語対応フォント(Yu Gothic 等)の指定が必須です。

コマンド③④:音声合成・BGM・無音カット(顔出しなし量産の核)

顔出しなしShortsの多くは「フリー素材や画像+合成音声(TTS)+字幕」で作ります。TTSの選定は無料TTS比較2026を参照。ここではナレーション音声とBGMを音量調整して混ぜ、映像に載せる工程を1コマンドで行います。

ffmpeg -i video.mp4 -i narration.wav -i bgm.mp3 -filter_complex \
"[2:a]volume=0.15[bg];\
[1:a][bg]amix=inputs=2:duration=first:dropout_transition=2[aout]" \
-map 0:v -map "[aout]" -c:v copy -c:a aac -b:a 192k -shortest output_mixed.mp4

[2:a]volume=0.15 でBGM(3番目の入力)を15%まで下げ、ナレーションを埋もれさせません。amix で2音声を合成、-shortest で映像かナレーションの短い方に尺を合わせます。-map で「0番の映像」「合成した音声」を明示的に選ぶのがポイントです。

静止画1枚+音声でShortsを作る(スライド系・解説系で頻出):

ffmpeg -loop 1 -i image.png -i narration.wav -vf \
"scale=1080:1920:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1" \
-c:v libx264 -tune stillimage -crf 20 -c:a aac -b:a 192k \
-pix_fmt yuv420p -shortest output_slide.mp4

-loop 1 で画像を静止動画化し、-shortest で音声の長さに合わせて自動終了。-pix_fmt yuv420p はプレイヤー互換性のため入れておくと安全です。

無音カットで尺を詰める(60秒制約への対応)

Shorts は原則60秒以内。TTSの不自然な間や録音の沈黙を自動で削ると、テンポが上がり尺も収まります。ffmpeg の silenceremove フィルタを使います。

ffmpeg -i input.mp4 -af \
"silenceremove=start_periods=1:start_duration=0.3:start_threshold=-40dB:\
stop_periods=-1:stop_duration=0.4:stop_threshold=-40dB" \
-c:v libx264 -crf 20 -c:a aac output_trimmed.mp4

stop_threshold=-40dB より静かな区間が 0.4秒以上続いたらカット、という設定です。閾値を厳しく(-50dB等)すると誤カットが増えるので、素材のノイズレベルに合わせて調整してください。映像と音声のズレが心配な場合は、この処理は音声だけに適用し後で結合する運用が安全です。

単純に指定秒数で切り出す(冒頭フック用クリップ量産など):

ffmpeg -ss 00:00:05 -i input.mp4 -t 58 -c:v libx264 -crf 20 -c:a aac clip.mp4

-ss(開始)を -i の前に置くと高速シーク、-t 58 で58秒だけ切り出します。

コマンド⑤⑥:複数分割と一括バッチ量産

長尺配信やまとめ動画から複数のShortsを機械的に切り出す使い方です。開始時刻の配列をループで回します(bash例)。

starts=("00:00:00" "00:01:00" "00:02:00")
i=1
for s in "${starts[@]}"; do
  ffmpeg -ss "$s" -i source.mp4 -t 58 \
    -vf "scale=-2:1920,crop=1080:1920,setsar=1" \
    -c:v libx264 -crf 20 -c:a aac "short_$(printf '%02d' $i).mp4"
  i=$((i+1))
done

出力を short_01.mp4 のように連番命名しておくと、後続の投稿工程で管理しやすくなります。命名規則を決めておくのが量産運用のコツです。

フォルダ内を一括処理するバッチ(量産の本命)

ここが編集アプリに対する最大の差です。input/ フォルダの全mp4を縦型変換+字幕焼き込みして output/ に吐く処理を、人間の操作ゼロで回します。

Windows バッチ(.bat):

@echo off
setlocal enabledelayedexpansion
if not exist output mkdir output
for %%f in (input\*.mp4) do (
  echo Processing %%~nxf ...
  ffmpeg -y -i "%%f" -vf "scale=1080:-2:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1,subtitles='input/%%~nf.srt':force_style='Fontsize=18,Outline=3,Alignment=2,MarginV=220'" -c:v libx264 -crf 20 -c:a aac "output\%%~nf_vertical.mp4"
)
echo All done.

%%~nf はファイル名(拡張子なし)で、同名の .srt を自動で拾って字幕を当てています。-y は上書き確認をスキップし完全自動化するための指定です。

Mac/Linux(.sh):

#!/usr/bin/env bash
mkdir -p output
for f in input/*.mp4; do
  name=$(basename "$f" .mp4)
  echo "Processing $name ..."
  ffmpeg -y -i "$f" \
    -vf "scale=1080:-2:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1,\
subtitles=input/${name}.srt:force_style='Fontsize=18,Outline=3,Alignment=2,MarginV=220'" \
    -c:v libx264 -crf 20 -c:a aac "output/${name}_vertical.mp4" \
    || echo "FAILED: $name" >> errors.log
done

|| echo ... >> errors.log失敗したファイルだけをログに残す簡易エラーハンドリングを入れています。100本回して2本失敗しても、どれが失敗したか一目で分かります。これも競合記事が薄い実務ポイントです。

量産バッチ導入 5ステップ

  1. input/ に素材mp4と同名の .srt(字幕)を入れる
  2. 上記スクリプトを保存(Windowsは run.bat、Macは run.sh
  3. Macは chmod +x run.sh で実行権限を付与
  4. ダブルクリック or ./run.sh で実行、output/ を確認
  5. errors.log をチェックし、失敗分だけ素材を直して再実行

コマンド⑦⑧:GPU高速化と投稿前の最終最適化

CPUエンコード(libx264)は高品質ですが遅い。NVIDIA GPUがあるなら NVENC に切り替えると、100本の総処理時間が体感で数分の1になります。副業で毎日回すなら効きます。

ffmpeg -i input.mp4 -vf \
"scale=1080:-2:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1" \
-c:v h264_nvenc -preset p5 -cq 23 -b:v 0 -c:a aac output_fast.mp4

-c:v h264_nvenc がGPUエンコーダ、-cq 23 が品質基準(数字を下げると高画質・大容量)。画質はlibx264のcrfにわずかに劣りますが、Shorts の視聴環境では差はほぼ分かりません。「品質最優先の1本はlibx264、量産はNVENC」が現実的な使い分けです。対応エンコーダは ffmpeg -encoders | grep nvenc で確認できます。

投稿前の最終最適化(YouTube推奨に合わせる)

アップロード前に音量を揃え(ラウドネス正規化)、互換性の高いコンテナに整えます。チャンネル内で音量バラつきがあると視聴維持率に響くので、量産時こそ正規化が効きます。

ffmpeg -i output_styled.mp4 -af "loudnorm=I=-14:TP=-1.5:LRA=11" \
-c:v copy -c:a aac -b:a 192k -movflags +faststart final_upload.mp4

loudnorm=I=-14 はYouTubeが基準とするラウドネス(-14 LUFS)に合わせる設定。-movflags +faststart はメタデータを先頭に移してアップロード後の処理を速くします。映像は再エンコード不要なので -c:v copy で一瞬で終わります。

出来上がったファイルは、投稿の自動化まで繋げると完全放置に近づきます。投稿工程はShorts自動投稿の方法で解説しています。ffmpeg(生成)→スケジューラ→API投稿、と繋げば「素材を置くだけ」の量産ラインになります。

投稿前チェックリスト

主要フィルタ・オプション早見表

現場で頻繁に使うものだけを絞りました。この表を手元に置けば、大半のShorts加工はコマンドを組み立てられます。

目的 フィルタ / オプション 要点
リサイズ scale=1080:-2 -2で2の倍数に自動調整
黒帯padding pad=1080:1920:(ow-iw)/2:(oh-ih)/2 中央配置の定番式
中央クロップ crop=1080:1920 全画面化・端が見切れる
回転補正 transpose=1 1=時計/2=反時計90度
SRT字幕 subtitles=x.srt:force_style=... libass必須
固定テキスト drawtext=text=... フォントパス要エスケープ
音量調整 volume=0.15 BGMを下げる
音声合成 amix=inputs=2 ナレ+BGM
無音カット silenceremove=... 尺短縮・テンポUP
音量正規化 loudnorm=I=-14 YouTube基準
GPU高速化 -c:v h264_nvenc 量産で効く
ピクセル比固定 setsar=1 歪み防止

よくある質問

ffmpegとCapCutなどの編集アプリ、どちらを使うべき?

量産フェーズはffmpeg、演出重視の1本はアプリ、が正解です。両方使うハイブリッドが最も現実的です。

構成やテロップ演出を試行錯誤する段階はプレビューできるアプリが圧倒的に速い。ですが、テンプレートが固まって「同じ処理を毎日5本」の段階に入ると、手作業のアプリはボトルネックになります。テンプレをffmpegコマンド化すれば、あとは素材を差し替えるだけで量産できます。

字幕が「文字化け」または「表示されない」原因は?

多くは日本語フォント未指定、libass非対応ビルド、SRTの文字コードのいずれかです。順に潰します。

force_style='FontName=Yu Gothic UI' で日本語フォントを明示し、Windowsは gyan.dev のフルビルドを使い(ffmpeg -filters に subtitles があるか確認)、SRTは UTF-8(BOMなし)で保存してください。この3点でほぼ解決します。

Shorts で字幕が下のボタンに隠れてしまうのはなぜ?

MarginV を大きくして字幕を上に持ち上げます。目安は200〜250pxです。

Shorts は画面下部にタイトル・いいね・コメント等のUIが重なります。subtitles=...:force_style='Alignment=2,MarginV=220' のように下マージンを確保すると、UIと干渉しないセーフゾーンに収まります。実機で一度確認して微調整するのが確実です。

BGMがうるさくてナレーションが聞こえないときは?

volume でBGMを10〜20%程度まで下げてから amix で合成してください。

[2:a]volume=0.15[bg];[1:a][bg]amix=inputs=2 のようにBGM側だけ音量を絞るのがコツです。それでも埋もれるなら sidechaincompress(ナレーション時にBGMを自動で下げるダッキング)を使う手もありますが、まずは固定音量で十分実用になります。

処理が遅い。100本回すと時間がかかりすぎるときは?

NVIDIA GPUがあれば -c:v h264_nvenc に替えるだけで数倍速くなります。-preset の見直しも有効です。

CPUの libx264-preset medium が標準ですが、量産では -preset veryfast で速度優先にする、あるいはNVENCへ切り替えるのが効きます。画質差はShorts視聴ではほぼ体感できません。夜間にバッチを回して朝に受け取る運用も現実的です。

音ズレが起きて映像と字幕・音声がずれるのはなぜ?

可変フレームレート素材が原因のことが多いです。-r 30 で固定フレームレート化すると直ります。

スマホやキャプチャ素材はVFR(可変フレームレート)のことがあり、これが音ズレの元凶です。ffmpeg -i in.mp4 -r 30 -c:v libx264 -c:a aac out.mp4 で30fps固定に変換してから加工すると安定します。silenceremove を映像込みで使う時も同様に固定fpsが安全です。

無料の商用利用は本当に大丈夫?ライセンスは?

ffmpeg本体はLGPL/GPLで商用利用可、収益化Shortsにも使えます。ただし素材・BGM・フォントの権利は別です。

ffmpegで加工すること自体に費用や許諾は不要です。注意すべきは入力する素材側で、フリー素材でも「商用可」「クレジット要否」を必ず確認してください。字幕フォントも商用利用可能なものを選ぶ必要があります。

まず何から始めればいい?最短の学習ルートは?

コマンド①(縦型変換)を1本試す→②字幕→⑥バッチ、の順が挫折しにくいです。数日で回せます。

いきなり全部を組まず、手持ちの横型mp4を1本、縦型に変換するところから始めてください。次に字幕を1本焼き込み、動いたらバッチ化してループに載せる。この順なら各ステップで成功体験が得られ、学習コストを最小化できます。プログラミング経験がなくてもコピペと置換で運用可能です。

エラーが出て止まる。どう調べればいい?

エラーメッセージの最終行を読むのが基本です。多くは入力パス誤り・フィルタ構文ミス・コーデック非対応です。

No such file はパス、No such filter はビルド非対応、Invalid argument はフィルタ構文の誤り(カンマ・コロンの位置)を疑います。まず -i の入力だけで再生できるか確認し、フィルタを1つずつ足して切り分けると原因が特定しやすいです。バッチには前述の errors.log を仕込んでおきましょう。

まとめ

ffmpeg は「1本を丁寧に作る」道具ではなく、「固まったテンプレを大量に複製する」道具です。だからこそ、顔出しなしYouTube副業の量産フェーズと決定的に相性がいい。この記事のコマンドを順に試せば、縦型変換→字幕焼き込み→音声合成→無音カット→一括バッチ→GPU高速化→投稿前最適化まで、素材を置くだけの量産ラインが組めます。

最初の数日は学習コストがかかり、細かい演出には向きません。そこはアプリや台本設計と役割分担し、ffmpeg には複製だけを任せる——このハイブリッドが、無理なく毎日投稿を続ける現実解です。まずはコマンド①を1本、今日試してみてください。動いた瞬間、量産のイメージが一気に具体化するはずです。

顔出しなしのショート動画、自分でも作ってみませんか?

この記事で紹介した faceless 動画は、Shorty ならテーマを入力するだけで台本・音声・字幕・BGM 込みで自動生成できます。無料プランあり。

無料で動画を作ってみる