MP4-Neucodierung zur Gewährleistung der Verkettung ohne Neucodierung

1784
Scrooch

Ich habe 2 mp4-Videos, die bei Verwendung von nicht verketten können:

MP4Box -add 1.mp4 -cat 2.mp4 out.mp4

Gibt es eine Möglichkeit, 2.mp4 neu zu codieren, damit der concat-Aufruf eine gültige Ausgabe erstellt? Möglicherweise mit ffmpeg? Ich kann nur eine Datei neu codieren, und ich möchte, dass die Verkettung keine Codierung vornimmt.

Der Fehler, den ich derzeit mit diesen 2 Dateien bekomme, lautet:

[iso-Datei] Feld "minf" hat 56 zusätzliche Bytes Fehler beim Anhängen von 2.mp4: IsoMedia-Datei wird abgeschnitten

1
Wenn Sie mit dem .MKV-Dateicontainerformat vertraut sind, finden Sie weitere Informationen unter [Meine Antwort hier] (http://superuser.com/questions/43588/how-can-i-merge-two-mp4-fileswithout-losing- Qualität / 43736 # 43736). Breakthrough vor 12 Jahren 0
danke für den vorschlag, ich bleibe beim 1.mp4, das kommt von ios-geräten. Ich erstelle 2.mp4. Wenn ich also das Dateiformat direkt vor der Zeit erhalte, sollte alles ohne erneute Kodierung zur concat-Zeit funktionieren. Scrooch vor 12 Jahren 0
Möglicherweise möchten Sie versuchen, [avidemux] (http://fixounet.free.fr/avidemux/) anstelle von MP4box als zu verwenden. Beide Programme funktionieren, aber ich habe mit avidemux viel Erfolg gehabt. Breakthrough vor 12 Jahren 0

1 Antwort auf die Frage

0
evilsoup

Sie können dies mit ffmpeg versuchen:

mkfifo temp0 temp1 ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \ ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \ ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4 

Dadurch wird nichts neu codiert, sondern in einem neuen Transportstrom-Container abgelegt, was die Verkettung vereinfacht und sie dann wieder zu einem MP4 zusammenfügt. Wenn output.mp4 bereits vorhanden ist, schlägt der Befehl fehl. In der obigen Version werden Named Pipes verwendet. Wenn Sie sich auf einem System befinden, das keine unterstützt, müssen Sie Zwischendateien verwenden:

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4 
That might be crazy enough to work, I'll give it a try when I get back from vacation. Thanks for the suggestion. Sorry I can't up vote, but I don't want to select it as the right answer until I try it. Scrooch vor 11 Jahren 0