
ビデオファイル(長さ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
オプションはより複雑に見えるかもしれませんが、より柔軟で便利です。たとえば、-vn
ffmpegにビデオストリームのみを省略するように指示しますが、ストリーム指定子 -map
ffmpeg に、必要なストリーム以外のすべてを省略するように指示できます。
ビデオのみをコピーするには:
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:1
2 番目のオーディオ ストリームを除くすべてのストリームがマッピングされます。 は、-map 0
ffmpeg に入力 (最初の入力) からのすべてのストリームを含めるように指示し0
、-map -0:a:1
次に ffmpeg に最初の入力からの最初のオーディオ ストリームを無視するように指示します。
答え3
最初の部分は正しいです。2 番目の部分では、b.mp4 ファイルのオーディオのみを抽出します。
ffmpeg -i b.mp4 -vn -acodec copy audio_b.mp3