Zu diesem Zeitpunkt schreibt ffmpeg den Header für LPCM-Streams in MPEG-1/2 beim Streamcopying nicht.
Benutzen
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -c:a pcm_s16be -y out.mpg
Ich habe eine DVD mit 4 aufgenommenen mpeg2-Videodateien mit pcm_dvd-kodiertem Audio. Ich möchte diese 4 Dateien zusammenstellen, einschließlich der Audioströme. Wenn ich jedoch diese Dateien mit ffmpeg und dem concat demuxer zusammenhalte, hat die .mpg-Ausgabedatei einen beschädigten Audiostream, der nun behauptet, im mp2-Format zu sein.
Hier ist die Ausgabe von ffprobe in einer der 4 Eingabedateien:
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
Und hier ist der Befehl, den ich verwendet habe, um diese Dateien zusammenzustellen:
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -y out.mpg
Dabei ist /tmp/files.txt eine Liste der 4 Dateiteile, wie in der concat- Dokumentation definiert.
Die Ausgabedatei sieht dann so aus:
[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
Der mp2-Header fehlt (weiß nicht, warum er jetzt mp2 ist) und wenn das Video mit vlc abgespielt wird, ist das Audio sicherlich beschädigt. Wie muss ich diese Dateien verketten, um Audio richtig zu kodieren? Beachten Sie, dass ich auch versucht habe, das concat-Protokoll anstelle des Demuxers zu verwenden, mit dem gleichen Ergebnis
Zu diesem Zeitpunkt schreibt ffmpeg den Header für LPCM-Streams in MPEG-1/2 beim Streamcopying nicht.
Benutzen
ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy -c:a pcm_s16be -y out.mpg