より適切な回答と説明、slhckとMulvyaからのスマートな提案を組み込み、必須ではないパラメーターを取り除いた。
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3
ffmpeg
オーディオ/ビデオ操作ツール:OPによって既に選択されているため、このジョブに特に適しています。
-i video.mp4
最初の入力ファイル:抽出したいオーディオを含むビデオ。
-i cover.jpg
2番目の入力ファイルは、結果のオーディオファイルを再生するときに表示する画像です。
-acodec libmp3lame
LAMEエンコーダーを使用して、.mp3ファイルを作成します。
-b:a 256k
これにより、オーディオトラックのビットレートが一定の256Kb / sに設定されます。よりスマートなオプションは、可変ビットレートでエンコードし、品質パラメーターを指定すること-q:a 0
です。最高品質を要求しますが、-q:a 4
多くの場合、知覚されるオーディオ品質とビットレート(つまり、ファイルサイズ)の間の適切な妥協点を表します。
-c:v copy
これは、ビデオストリーム(.jpg画像)は再エンコードされないが、そのままコピーする必要があることを示しています。これは、損失の多い形式に再エンコードするときに、不要な処理や潜在的な品質の損失を回避するのに役立ちます。私たちの場合、このパラメーターがない場合、画像は.jpgからデコードされ、.pngにエンコードされます。これは、デフォルトで選択されるネイティブ形式であると思われます。.pngは損失があるため、これは品質の低下を表すものではありませんが、.jpg(損失が多い)の方が一般に圧縮率が高いため、ファイルサイズが大きくなることがよくあります。
-map 0:a:0
これは、使用するストリームを最初の(0:
)入力ファイルから選択します。これは、含まれる最初の(:0
)オーディオ(a
)ストリームでなければなりません。
-map 1:v:0
これにより、2番目の()入力ファイルから最初の(:0
)ビデオ(v
)ストリームが選択され1:
ます。
output.mp3
このパラメーターの名前は、作成する画像が組み込まれた出力オーディオ(.mp3)ファイルに付ける名前である必要があることをすでに示唆しているため、巧妙に選択されています。
元の答え
これは、結婚式のビデオ(.mp4)と写真(.jpg)を組み合わせて、静止画像を含むオーディオ(.mp3)ファイルを作成します。
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3
ここでの関連オプションであるを使用した入力ストリームの選択に関するffmpegのドキュメントを参照してください-map
。
私は最初に単純にコマンドを実行し、-map 0 -map 1
この情報を得ました:
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))
したがって1
、インデックス番号がの0
ファイル、つまりビデオファイルからストリーム(aacオーディオ)が必要であることはわかっていました。したがって、で明示的に選択する必要がありました-map 0:1 -map 1
。