ffmpegコマンドはビデオファイルの一部をオーディオファイルに変換します

ffmpegコマンドはビデオファイルの一部をオーディオファイルに変換します

ビデオファイル(長さ1時間)があります。ビデオファイルの一部(30分)をオーディオファイルに変換する必要があります。

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vcodec copy -acodec copy /opt/b.mp4

それから私は

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -acodec copy /opt/b.mp4

しかし、音声と一緒にビデオを見ることはできます。必要なのは音声ファイルだけです

答え1

オーディオのみが必要な場合(正しく理解できていればよいのですが)、最初の手順はまったく必要ありません。以下を使用する場合:

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec copy /opt/b.mp3

それはそうするだろう提供された元のオーディオ コーデックは mp3 でした。そうでない場合は、とにかく強制的に再エンコードすることができます。

ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec libmp3lame ...other_parameters.. /opt/b.mp3

ビットother_parametersレートなどもあります。

答え2

ビデオとオーディオの両方を含むファイルからビデオまたはオーディオのみを取得するには、主に2つの方法があります。デフォルトではストリームの選択ffmpeg の動作では、ストリーム タイプごとに 1 つのストリームが選択されます。入力には、ビデオ、オーディオ、字幕、データなど、複数のストリーム タイプを含めることができることに注意してください。入力によっては、2 つのビデオ ストリームなど、これらのストリーム タイプを複数含めることもできます。


-vnまたは-an

これらのオプションは、ffmpeg にビデオ ( -vn) またはオーディオ ( -an) を省略するように指示します。

ビデオを省略してオーディオをコピーするには:

ffmpeg -i input -vn -codec:a copy output.mka

オーディオを省略してビデオをコピーするには:

ffmpeg -i input -an -codec:v copy output.mkv
  • これらの例はストリームコピー目的のストリーム。つまり、ffmpeg は再エンコードするのではなく、単に再多重化します。これは非常に高速で、基本的に「コピー アンド ペースト」なので、品質には影響しません。

  • -vnとを使用すると-an、字幕やデータ ストリームなど、存在する可能性のある他のストリームは省略されませんが、オーディオのみの形式ではこれらは無視されます。


-map

-mapオプションはより複雑に見えるかもしれませんが、より柔軟で便利です。たとえば、-vnffmpegにビデオストリームのみを省略するように指示しますが、ストリーム指定子 -mapffmpeg に、必要なストリーム以外のすべてを省略するように指示できます。

ビデオのみをコピーするには:

ffmpeg -i input -map 0:v -codec copy output.mkv

オーディオのみをコピーするには:

ffmpeg -i input -map 0:a -codec copy output.mka
  • 0:v、ffmpeg に最初の入力からの0ビデオ ストリームのみを含めるように指示するストリーム指定子ですv。これはさらに拡張できます。0:v:0とを使用することfirst input:video:first video streamは、入力に複数のビデオ ストリームが含まれていて、最初の 1 つだけが必要な場合に便利です。入力内のストリームの順序を確認するには、ffmpeg コンソール出力を参照してください。

  • ネガティブ マッピングを使用することもできます。 を使用すると、-map 0 -map -0:a:12 番目のオーディオ ストリームを除くすべてのストリームがマッピングされます。 は、-map 0ffmpeg に入力 (最初の入力) からのすべてのストリームを含めるように指示し0-map -0:a:1次に ffmpeg に最初の入力からの最初のオーディオ ストリームを無視するように指示します。

答え3

最初の部分は正しいです。2 番目の部分では、b.mp4 ファイルのオーディオのみを抽出します。

ffmpeg -i b.mp4 -vn -acodec copy audio_b.mp3

関連情報