web-dev-qa-db-ja.com

ビデオからのオーディオの抽出と再結合

Vegas、Premiere、Pinnacle、SoundForge、および私が試した他のすべてのエディターにうんざりしています。

AVIファイルのオーディオを変更しようとしていますが、試したすべてのエディターは、変更を保存するときにビデオを再エンコードすることを要求し、品質を低下させるか、数時間かかります。

ffmpegを使用してビデオからオーディオストリームを抽出し、オーディオエディターで編集してから、保存した変更をビデオと再結合する方法はありますか?

3
waitinforatrain

まず、FFmpegの最新バージョンをインストールしていることを確認してください ダウンロードページから 。 Windows、Linux、OS Xの場合、静的ビルドを利用できます。 OS Xでは、 Homebrew (with brew install ffmpeg)を使用することもできます。

ビデオからオーディオを抽出する

ファイルからオーディオストリームを抽出するために、WAVコンテナ内のPCMステレオオーディオにエクスポートします。これは、ロスレスであり、再エンコードされないためです。

ffmpeg -i input-file.avi audio.wav

もちろん、FLACやALACなど、他の多くのコーデックを使用することもできます。ただし、WAV(またはAppleのAIFF)のPCMコンテンツはおそらく編集に最適です。

次に、必要に応じてオーディオストリームにエフェクトを適用します。

オーディオとビデオを再結合する

オーディオストリームとビデオファイルを再結合するには、次のコマンドを実行します。

ffmpeg -i input-file.avi -i audio.wav -c copy -map 0:0 -map 1:0 output.avi

備考

ストリームマッピングでは、ビデオファイルとオーディオファイルが正しい順序(-i video-i audio)であることが重要です。そうしないと動作しない可能性があります。

-map 0:0 -map 1:0オプションは、元のオーディオを使用する代わりに、2番目の入力ファイル(11:0)からのオーディオをAVIにマップします。これはここで最も重要なパラメータです。

理論的には、-c copyを変更して、ビデオビットストリーム(-c:v copy)をコピーし、他の圧縮オーディオコーデックを使用することができます。これは、copyが非圧縮PCMステレオオーディオを使用しようとするためです。同様に、もちろん、編集したオーディオファイルをMP3に保存して代わりに使用することもできますが、copyは保持します。

PCMステレオWAVファイルをMP3にエンコードするには、次のようにします。

ffmpeg -i input-file.avi -i audio.wav -c:v copy -c:a libmp3lame -map 0:0 -map 1:0 output.avi

オーディオファイルがビデオファイルよりも短い場合は、ループすることをお勧めします。これを行うには、-loop 1オプションを指定します。

6
slhck