🎬

【ffmpeg】よく使うコマンド12選・解説付き

2024/07/15に公開

ffmpegのよく使うコマンド集です。
解説については既に説明したものは省いているのでご了承ください。

コマンド集

1. 画質を落とす+汎用性の高いエンコードに直す

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

【解説】

  • -c:v libx264: H.264コーデックを使用(広くサポートされている)
  • -crf 23: 画質を調整 (18-28が良い範囲、数値が小さいほど高画質)
  • -preset medium: エンコード速度と圧縮率のバランス (faster, slowなども選択可能)
  • -c:a aac: AACオーディオコーデックを使用 (多くのデバイスでサポート)
  • -b:a 128k: オーディオビットレートを128kbpsに設定

2. 解像度を落とす

ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -c:a aac -b:a 128k output.mp4

【解説】

  • 解像度変更: -vf scale=1280:720 (1280x720に変更)

【ほかの便利なオプション】

  • アスペクト比維持: -vf scale=1280:-2 (-2で自動計算)
  • フレームレート変更: -r 30 (30fpsに変更)

3. 動画結合

方法1: txtファイルにリスト作って結合

list.txtファイルを以下のような内容で保存します

list.txt
file /path/A.mp4
file /path/B.mp4

そして、このようなコマンドを実行します

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

【解説】

  • concat: 動画の結合には基本的にこのコマンドを使います
  • -safe 0: これを指定すると、このセキュリティ制約が無効になり、相対パスや絶対パスを含むファイルリストを読み込むことができるようになります。

方法2: コマンド内で完結させる

ffmpeg -i "concat:A.mp4|B.mp4" -c copy output.mp4

【解説】

  • concat:A.mp4|B.mp4: concat:の後に動画ファイルのファイル名、そして|で区切ることで複数のファイルを結合できます。

4. 動画カット

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4

【解説】

  • -ss: カットの最初のタイム。最初の00が時間(hour)、01が分、最後の00が秒です。秒は小数に対応しており、00:01:00.10と指定することも可能です。
  • -to: カットの最後のタイム。これも小数で指定することができます。

【ほかの便利なオプション】

  • 秒数指定: -t 25 (カットの最初のタイムから秒数でカウントしカット)

5. 動画から音声を抽出

ffmpeg -i input.mp4 -vn -c:a copy output.aac

【解説】

  • -vn: 映像なし
  • -c:a copy: 音声コーデックをコピー

6. 動画の音声調整

ffmpeg -i input.mp4 -af "volume=1.5" output.mp4

【解説】

  • -af: オーディオフィルタ
  • volume=1.5: 音量を1.5倍に

7. 動画から音声削除

ffmpeg -i input.mp4 -an -c:v copy output.mp4

【解説】

  • -an: 音声なし

8. 動画の回転

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

【解説】

  • transpose=1: 時計回りに90度回転。
  • 0: 反時計回りに回転+上下反転)
  • 2: 反時計回りに90度回転)
  • 3: 時計回りに回転+上下反転)

9. 動画の手振れ補正

ffmpeg -i input.mp4 -vf vidstabdetect -f null -
ffmpeg -i input.mp4 -vf vidstabtransform output.mp4

【解説】

  • vidstabdetectvidstabtransform: 手ぶれ補正

10. 動画の字幕焼き付け

ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4

【解説】

  • subtitle.srt: 字幕ファイルを指定。ここではSRTファイルを使用。

11. 音量の平均を算出する (デシベル)

ffmpeg -i input.mp4 -vn -af volumedetect -f null /dev/null

【解説】
このコマンドを実行すると、最後の方にこのような出力が得られます。

[Parsed_volumedetect_0 @ xxxxxxxxxxxxxx] mean_volume: -23.5 dB
[Parsed_volumedetect_0 @ xxxxxxxxxxxxxx] max_volume: -5.8 dB

mean_volumeが平均したボリュームで、max_volumeはその名の通りの音量です。
一般的にmax_volume0dbになるくらいに調整するのが好ましいとされています。

  • input.mp4: 音量を測定したい動画ファイルのパスに置き換えてください。
  • -vn: ビデオストリームを無視します。
  • -af volumedetect: 音量検出フィルターを適用します。
  • -f null /dev/null: 出力ファイルをnullデバイスに指定し、ファイルを出力しません。

12. 動画⇒連番画像 or 連番画像⇒動画

動画⇒連番画像
ffmpeg -i input.mp4 -vf fps=1 image-%04d.jpg
連番画像⇒動画
ffmpeg -r 25 -f image2 -s 1920x1080 -i image-%04d.jpg output.mp4

動画⇒連番画像

【解説】

  • -i input.mp4: 入力動画を指定します。
  • -vf fps=1: 動画のフレームレートを1fpsに設定し、1フレームごとに画像を出力します。
  • image-%04d.jpg: 出力画像のファイル名形式を指定します。%04dの部分は4桁の連番になるので、image-0001.jpgimage-0002.jpgimage-0003.jpg…という風になります。jpgは画像形式です。

連番画像⇒動画

【解説】

  • -r 25: 出力動画のフレームレートを25fpsに設定します。
  • -f image2: 入力形式を画像として指定します。

【ほかの便利なオプション】

  • 音声を追加: -i audio.mp3のように音声ファイルを追加することで、動画に音声を付けることができます。

おまけ

mp4を汎用性の高い動画に変換するbatファイルです。
複数ファイルでもドラッグ&ドロップで変換できるようにしました。
保存して使ってください。

@echo off
setlocal enabledelayedexpansion

:loop
if "%~1"=="" goto end

set "infile=%~1"
set "outfile=%~dpn1"

:checkfile
if not exist "%outfile%_1.mp4" (
    set "outfile=%outfile%_1"
) else (
    set /a num=2
    :checkloop
    if exist "%outfile%_%num%.mp4" (
        set /a num+=1
        goto checkloop
    ) else (
        set "outfile=%outfile%_%num%"
    )
)

echo %infile% を %outfile%.mp4 に変換中...
ffmpeg -i "%infile%" -c:v libx264 -c:a aac -b:a 128k "%outfile%.mp4"

shift
goto loop

:end
echo 変換が完了しました。
pause

Discussion