Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wpforms-lite domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/yuki/argontown/wordpress/wp-includes/functions.php on line 6114
ffmpegのコマンド一覧 - Argon Town Blog

ffmpegのコマンド一覧

よく使うコマンド一覧

コマンド例説明
$ ffmpeg -versionバージョンを表示
$ ffmpeg -i input.mp4 output.avi動画の変換
$ ffmpeg -i input.mp4 -vn output.mp3音声の抽出
$ ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 output.mp4動画のトリミング
$ ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4動画のクロップ
$ ffmpeg -i input1.mp4 -i input2.mp4 -c copy -map 0 -map 1 output.mp4動画の結合
$ ffmpeg -framerate 24 -i %05d.png -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4連番画像から動画を作成
$ ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:10 -vf "fps=24" output_%03d.png動画から連番画像を作成

動画の変換オプション

例:

$ ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
-i input.mp4入力ファイルとしてinput.mp4を指定します。
-c:v libx264ビデオをH.264コーデックでエンコードします。
-crf 23ビデオの品質を制御するためのオプションです。値が低いほど高品質になります。通常の範囲は0-51で、18-28の間の値が一般的です。
-c:a aac -b:a 128k音声をAACコーデックでエンコードし、ビットレートを128kbpsに設定します。
output.mp4出力ファイルの名前をoutput.mp4に設定します。

主な動画フォーマット一覧

フォーマットコマンドオプション説明
MPEG-4-c:v mpeg4MPEG-4形式で動画をエンコードします。
H.264-c:v libx264H.264形式で動画をエンコードします。高圧縮で高品質な映像を実現します。
H.265-c:v libx265H.265形式で動画をエンコードします。H.264よりも高い圧縮効率を持ち、同等品質でファイルサイズを削減します。
VP9-c:v libvpx-vp9VP9形式で動画をエンコードします。高圧縮で高品質な映像を提供しますが、エンコードには時間がかかります。
AV1-c:v libaom-av1AV1形式で動画をエンコードします。高圧縮で高品質な映像を提供しますが、エンコードには時間がかかります。
MOV-f movQuickTimeコンテナ形式で動画を保存します。
AVI-f aviAVIコンテナ形式で動画を保存します。
MKV-f matroskaMatroskaコンテナ形式で動画を保存します。
MP4-f mp4MP4コンテナ形式で動画を保存します。
WebM-f webmWebMコンテナ形式で動画を保存します。Web上での再生に適しています。

動画のトリミング

例:

$ ffmpeg -i input.mp4 -ss 00:01:05 -t 00:00:10 -c copy output.mp4

動画の1分5秒から10秒間を無劣化でトリミングする。

-ss 00:01:05トリミングの開始位置を指定します。フォーマットはHH:MM:SSや秒数など複数の形式で指定できます。ここでは、動画の1分5秒からトリミングを開始します。
-t 00:00:10トリミングする時間の長さを指定します。HH:MM:SSや秒数などで指定します。左の例では、10秒間のトリミングを行います。
-to 00:02:10
トリミングの終了位置を指定します。HH:MM:SSで指定します。左の例では、開始位置から2分10秒までのトリミングを行います。
-c copy再エンコードせずにそのまま切り出します。無劣化かつ早いので、エンコードの必要がなければ基本つけます。

動画のクロップ

例:

$ ffmpeg -i input.mp4 -vf "crop=300:200:0:0" output.mp4

動画の左上から幅300ピクセル、高さ200ピクセルの領域をクロップする。

-vf “crop=300:200:0:0”ビデオフィルターグラフを指定します。cropフィルタを使用してクロップの設定を行います。幅:高さ:X座標:Y座標の形式で指定します。この例では左上の幅300ピクセル、高さ200ピクセルの領域をクロップしています。

動画の結合オプション

例:

$ ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

この例では、input1.mp4input2.mp4という2つの入力ファイルを結合して1つの動画にしています。

-i input1.mp4 -i input2.mp4入力ファイルとしてinput1.mp4input2.mp4を指定します。
-filter_complex複数のフィルターを組み合わせて処理するためのオプションです。
“[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]”concatフィルターを使用して2つの動画を結合します。nパラメータで入力ストリームの数を指定し、vaパラメータでビデオとオーディオのストリームを指定します。[outv][outa]は出力のビデオとオーディオストリームを示しています。※
-map “[outv]” -map “[outa]”結合したビデオとオーディオストリームを指定します。

※concatフィルターについて

[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa] は、concatフィルターを使用して動画の結合を行うためのフィルターグラフを表しています。以下では、このフィルターグラフの詳細な説明を行います。

  • [0:v] : 最初の入力ファイルのビデオストリームを参照します。
  • [0:a] : 最初の入力ファイルのオーディオストリームを参照します。
  • [1:v] : 2番目の入力ファイルのビデオストリームを参照します。
  • [1:a] : 2番目の入力ファイルのオーディオストリームを参照します。
  • concat=n=2:v=1:a=1 : concatフィルターを使用して結合を行います。
    • n=2 : 入力ストリームの数を2つ指定します。
    • v=1 : 結合されたビデオストリームを生成します。
    • a=1 : 結合されたオーディオストリームを生成します。
  • [outv] : 結合されたビデオストリームを [outv] というラベルで出力します。
  • [outa] : 結合されたオーディオストリームを [outa] というラベルで出力します。

このフィルターグラフによって、2つの入力動画のビデオストリームとオーディオストリームが結合され、結果として1つのビデオストリームと1つのオーディオストリームが生成されます。そして、-mapオプションを使用してそれぞれの結果を指定し、最終的な出力ファイルに保存します。

連番画像から動画を作成

例:

$ ffmpeg -framerate 30 -i image%03d.jpg -start_number 60 -c:v libx264 -crf 18 -pix_fmt yuv420p output.mp4

この例では、image001.jpgimage002.jpgimage003.jpgなどの連番画像ファイルを使用して動画を作成します。

オプション説明
-framerate 30フレームレートを30fps(フレーム/秒)に設定します。連番画像の表示速度を制御します。
-i image%03d.jpg入力ファイルとしてimage001.jpgimage002.jpgimage003.jpgなどの連番画像ファイルを指定します。%03dはゼロパディングされた3桁の連番を表します。
-start_number 1連番の最初の番号を指定します。
-c:v libx264ビデオをH.264コーデックでエンコードするためのオプションです。
-crf 18ビデオの品質を制御するためのオプションで、値が低いほど高品質になります(範囲は0-51)。この例では品質レベル18を指定しています。
-pix_fmt yuv420p出力のピクセルフォーマットをYUV420Pに設定します。これは一般的なピクセルフォーマットであり、互換性が高いです。

動画から連番画像を書き出し

$ ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:10 -vf "fps=24" output_%03d.png

この例では、input.mp4という入力ビデオファイルから、00:00:05から00:00:15の区間をPNG連番画像として書き出します。

オプション説明
-i input.mp4入力ビデオファイルとしてinput.mp4を指定します。
-ss 00:00:05トリミングの開始位置を指定します。ここでは00:00:05(5秒)からトリミングを開始します。
-t 00:00:10トリミングする時間の長さを指定します。ここでは00:00:10(10秒)の区間をトリミングします。
-vf “fps=24”フレームレートを24fpsに設定するビデオフィルターグラフを指定します。ここでは24fpsの連番画像を書き出します。
output_%03d.png出力ファイル名のパターンを指定します。%03dはゼロパディングされた3桁の連番を表します。各フレームはoutput_001.pngoutput_002.pngoutput_003.pngなどとして書き出されます。
-q:v 2pngではなく、JPEG形式で書き出す場合、品質を制御するためのオプションです。値が低いほど高品質になります。一般的な範囲は1-31で、2は中程度の品質を示します。

このコマンドを実行すると、指定の区間のフレームがPNG連番画像として書き出されます。

注意点として、-ssオプションを入力ファイルより前に配置することで、指定の開始位置に正確にトリミングを行います。また、-tオプションで指定する時間はトリミングする長さを表し、終了時刻ではないことに注意してください。