使用 ffmpeg 将 mpeg2 文件与 pcm_dvd 音频合并

使用 ffmpeg 将 mpeg2 文件与 pcm_dvd 音频合并

我有一张 DVD,其中包含 4 个录制的 mpeg2 视频文件和 pcm_dvd 编码的音频。我想将这 4 个文件(包括音频流)连接在一起。但是,当我使用 ffmpeg 和连接解复用器连接这些文件时,输出的 .mpg 文件中的音频流已损坏,现在声称是 mp2 格式。

以下是 ffprobe 对 4 个输入文件之一的输出:

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 是 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 协议而不是解复用器,结果相同

答案1

目前,ffmpeg 在流复制时不会写入 MPEG-1/2 中 LPCM 流的标题。

使用

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

相关内容