Wie kann ich zwei oder mehr MP4-Dateien zusammenführen oder verketten, um eine weitere MP4-Datei zu erstellen? [Duplikat]

14

Wie kann ich 2 oder mehr MP4-Dateien in einer endgültigen MP4-Ausgabedatei zusammenfügen oder zusammenführen?

Ich habe im DOS-Fenster versucht, den Befehl COPY zu verwenden (ich habe ihn irgendwo gelesen), aber er funktioniert nicht gut.

Frau Isabel Teixeira
quelle
Weitere Informationen finden Sie auch unter superuser.com/questions/43588/… . Ich bin mir nicht sicher, ob ich diese Frage als Duplikat einstufen würde.
Durchbruch
1
Bitte fügen Sie Ihr Betriebssystem als Tag hinzu.
Tumchaaditya

Antworten:

12

MP4Box kann dies, obwohl Sie möglicherweise eine GUI wie YAMB oder My MP4Box GUI verwenden möchten . (NB: Es ist nicht mein persönliches Programm, das ist nur der Name.) MP4Box-Binärdateien für Windows sind auf dieser Site verfügbar .

Beispiel:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4
afrazier
quelle
4

Ich würde empfehlen, ffmpeg zu verwenden , das für Mac OS X, Linux und Windows verfügbar ist .

Hier ist ein gutes Beispiel dafür, wie zwei Filme verkettet werden: http://www.ffmpeg.org/faq.html#SEC27

Im letzten Schritt müssen Sie nur sicherstellen, dass Sie einen MP4-Container für die resultierende Datei erstellen.

Polemon
quelle
Soweit ich die Antwort auf die häufig gestellten Fragen zu ffmpeg verstehe, ist dies mit MP4-Video (vermutlich H.264) nicht möglich, da es sich nicht um eines der "privilegierten Formate" handelt.
ttarchala
@ttarchala: Ich würde versuchen, ob es geht. Ich habe zuvor mit FFmpeg in MP4 konvertiert, aber nie zwei Filme verkettet. Außerdem: Ich möchte darauf hinweisen, dass sich FFmpeg sehr schnell entwickelt. Was in einer Version nicht funktioniert hat, funktioniert möglicherweise nur in der nächsten.
Polemon
1
Nicht alle FFMPEG-Builds unterstützen MP4. Zum einen handelt es sich um eine patentierte Technologie, und es ist möglicherweise illegal, MP4-Encoder in den USA ohne Zahlung einer Gebühr zu vertreiben. Viele Builds können dies jedoch tun.
CarlF
@CarlF: Für Linux und Mac OS X ist dies eigentlich kein Problem. Der Code kann frei verteilt werden, wer also sein eigenes FFmpeg erstellt, ist grundsätzlich in Ordnung. Was die Patentierung betrifft, möchte ich einen Kommentar mitteilen: Ich werde die Site derzeit nicht sofort finden, aber das erste Patent, das für AAC (das teilweise in MPEG-4 definiert ist) abläuft, ist im Jahr 2022. Und das ist Nur das erste, es gibt viele weitere, die ablaufen müssen, bis es völlig legal ist ...
polemon
4

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. Sie werden in einen neuen Transportstromcontainer gestellt, wodurch die Verkettung vereinfacht wird. Anschließend werden sie wieder zu einem MP4 verkettet. Wenn output.mp4 bereits vorhanden ist, schlägt der Befehl fehl. In der obigen Version werden Named Pipes verwendet. Sie befinden sich auf einem System, das die Verwendung von Zwischendateien nicht unterstützt:

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
Übelsuppe
quelle
was ist wenn es nicht h264 sondern mpeg4 ist?
Edison
2

Update: Habe gerade Avidemux überprüft, nachdem ich die andere Antwort gelesen hatte. Es ist das, wonach Sie suchen (hätte nicht gedacht, dass es aufgrund seines Namens MP4 kann…).

Ich denke, VirtualDubMod ist mp4-fähig, ich habe es aber nicht benutzt, also weiß ich es nicht genau.

Vielleicht möchten Sie MeGUI ausprobieren . Es ist eine ziemlich komplexe und funktionsreiche App und Tools.

Das Tool zum Einbetten in einen Container (in Ihrem Fall mp4) heißt muxer, das man aber wahrscheinlich nicht verketten kann.

Sie können es in Kombination mit VirtualDub verwenden. Virtualdub, um die Videostreams zu verketten, und der Muxer, um sie wieder in eine mp4-Datei umzuwandeln (ohne sie neu codieren zu müssen).

Kissaki
quelle
1

Ich mache es mit mencoder, nachdem ich sie mit ffmpeg in avi konvertiert habe

Hier ist ein einfaches Skript, vorausgesetzt, Sie haben 15 Dateien mit dem Namen 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

Prost

Laplace
quelle
1

Hier ist der Befehl:

ffmpeg -i concat:"video1.ts|video2.ts"
Rogerdpack
quelle
Muss dieses Pipe-Zeichen entkommen werden? Oder verstehe ich diesen Befehl völlig falsch?
Killermist
es musste geflohen werden. Hoppla.
Rogerdpack