Используйте ffmpeg для объединения файлов mpeg2 с аудио pcm_dvd
У меня есть DVD, содержащий 4 записанных видеофайла в формате mpeg2 со звуком в кодировке pcm_dvd. Я хочу объединить эти 4 файла вместе, включая аудио потоки. Однако, когда я объединяю эти файлы с помощью ffmpeg и демультиплексора concat, выходной файл.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 частей файла, как определено в документации concat.
Выходной файл тогда выглядит так:
[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 вместо demuxer, с тем же результатом
1 ответ
В настоящее время ffmpeg не записывает заголовок для потоков LPCM в MPEG-1/2 при копировании потока.
использование
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -c:a pcm_s16be -y out.mpg