web-dev-qa-db-ja.com

ffmpegを使用してmpeg2ファイルをpcm_dvdオーディオとマージします

Pcm_dvdでエンコードされたオーディオを含む4つの記録されたmpeg2ビデオファイルを含むDVDがあります。オーディオストリームを含め、これら4つのファイルを連結したいと思います。ただし、これらのファイルをffmpegおよびconcat demuxerで連結すると、出力.mpgファイルに破損したオーディオストリームが含まれ、mp2形式であると主張されます。

4つの入力ファイルの1つでのffprobeの出力は次のとおりです。

Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 720x480 [SAR 32:27 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn
Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 Hz, 2 channels, s16, 1536 kb/s

そして、これらのファイルを連結するために使用したコマンドは次のとおりです。

ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -y out.mpg

ここで、/ tmp/files.txtは、 concat ドキュメントで定義されている4つのファイル部分のリストです。

出力ファイルは次のようになります。

[mp2 @ 0x2af9d00] Header missing
    Last message repeated 282 times
[mpeg @ 0x2af66e0] decoding for stream 1 failed
[mpeg @ 0x2af66e0] Could not find codec parameters for stream 1 (Audio: mp2, 0 channels, s16p): unspecified frame size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpeg, from 'out.mpg':
  Duration: 03:15:36.75, start: 0.533367, bitrate: 7184 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 720x480 [SAR 32:27 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn
    Stream #0:1[0x1c0]: Audio: mp2, 0 channels, s16p

Mp2ヘッダーがありません(なぜ今mp2になっているのかわかりません)。vlcでビデオを再生すると、オーディオが確実に破損します。オーディオを正しくエンコードするには、これらのファイルをどのように連結する必要がありますか?デマルチプレクサの代わりに concat protocol を使用しようとしたところ、同じ結果が得られたことに注意してください。

2
tyleha

現時点では、ffmpegはストリームコピー時にLPCMストリームのヘッダーをMPEG-1/2で書き込みません。

使用する

ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -c:a pcm_s16be -y out.mpg
2
Gyan