Neste momento, o ffmpeg não grava o cabeçalho para fluxos LPCM em MPEG-1/2 durante a cópia em fluxo.
Use
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -c:a pcm_s16be -y out.mpg
Eu tenho um DVD contendo 4 arquivos de vídeo mpeg2 gravados com áudio codificado pcm_dvd. Eu quero concatir esses 4 arquivos juntos, incluindo os fluxos de áudio. No entanto, quando concatro esses arquivos com ffmpeg e o demuxer de concat, o arquivo .mpg de saída tem um fluxo de áudio corrompido que agora afirma estar no formato mp2.
Aqui está a saída do ffprobe em um dos 4 arquivos de entrada:
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
E aqui está o comando que usei para concatenar esses arquivos:
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -y out.mpg
onde /tmp/files.txt é uma lista das 4 partes do arquivo, conforme definido na documentação concat .
O arquivo de saída é assim:
[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
O cabeçalho mp2 está faltando (não sei porque agora é mp2) e ao reproduzir o vídeo com vlc, o áudio certamente está corrompido. Como devo concatenar esses arquivos para codificar corretamente o áudio? Observe que também tentei usar o protocolo de concat em vez do demuxer, com o mesmo resultado