2

У меня есть 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 ответ1

2

В настоящее время ffmpeg не записывает заголовок для потоков LPCM в MPEG-1/2 при копировании потока.

использование

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .