FFMPEGはビデオから抽出するときにオーディオの長さを2倍にします

FFMPEGはビデオから抽出するときにオーディオの長さを2倍にします

動画ファイルがありますvideo.mp4。長さは18分23秒です。音声のみこのビデオから、ビデオのオーディオから可能な限り最高品質の MP3 を作成します。

Google で調べてみると、次のコマンドにたどり着きました:ffmpeg -i video.mp4 audio.mp3

問題は、このコマンドがダブルス出力されるオーディオの長さ (継続時間は 36 分 46 秒)。オーディオ トラックを 1 回ループするため、出力には 18 分 23 秒のオーディオ全体が含まれ、その後すぐに 18 分 23 秒のオーディオが再び開始されます。

さらにグーグルで検索すると、この旗が見つかりました-write_xing 0:このSOの質問ただし、そのフラグを使用しても、オーディオはループします。

編集: さらにグーグルで調べた結果、2 つのオーディオ チャンネル (およびおそらく 2 つのチャンネルをマージするのではなく、チャンネル 1 の直後にチャンネル 2 をループする) と関係があるのではないかと考え、このフラグにたどり着きました。-ac 1これは、ステレオ -> モノラルを強制的にマージするものです。これも機能せず、38 分 46 秒の MP3 ファイルが出力されます。

再生時間を 2 倍にせずに、ビデオ ファイルからオーディオを抽出 (MP3 に) するにはどうすればよいですか?

答え1

これを試して:

ffmpeg -i video.mp4 -vn -sn -c:a mp3 -ab 192k audio.mp3

私も同じ目的でこれを使用しましたが、オーディオの長さは変わりませんでした。また、(私見ですが) 品質を上げようとするのはやりすぎですが、320k で試してみることはできます。

答え2

Google は、ffmpeg Trac でいくつかのバグ レポートを発見しました。それによると、ffmpeg のコマンド ラインで -write_xing 0 を使用すると、この問題が解決する可能性があるとのことです。長さの不一致は、デフォルトで書き込まれる Xing データの値が間違っているために発生するようです。

関連情報