Wie kann ich zwei mp4-Dateien zusammenführen, ohne an Qualität zu verlieren?

51

Ich habe zwei hochwertige mp4-Dateien, die aus zwei Teilen derselben Show bestehen.

Ich möchte sie zu einer Datei zusammenführen, und ich verwende normalerweise VirtualDub, um meine Dateien zusammenzuführen ... Es scheint jedoch keine mp4-Unterstützung zu geben.

Welche Alternativen stehen zur Verfügung (insbesondere solche, die keine Neucodierung erfordern)?

Paolo Bergantino
quelle

Antworten:

41

Normalerweise verwende ich VirtualDub, um meine Dateien zusammenzuführen, aber es scheint MP3 nicht zu unterstützen. Welche Alternativen gibt es?

Avidemux . Es ist wie VirtualDub, nur mit mehr unterstützten Formaten und eingebauten Codecs und Filtern. Ich benutze es immer in Vorliebe; es verbindet AVC + AAC.MP4-Dateien (ohne Neukodierung) gut für mich.

So schließen Sie sich AviDemux an:

  1. Datei -> Öffnen -> Datei auswählen
  2. Datei -> Anhängen -> Datei auswählen
  3. Stellen Sie alle auf Kopieren
  4. Datei -> Speichern -> Dateiname
  5. Warten..

Laut AViDemux-Foren ist dieser Beitrittsprozess verlustfrei ( http://www.avidemux.org/smf/index.php?topic=9467.0 ).

Bobince
quelle
Ja, es scheint hervorragend zu funktionieren, wenn Audio und Video synchron gehalten werden, während die anderen Personen, die auf diese Frage antworten, in dieser IMHO fraglich sind.
Djangofan,
1
Ich habe versucht, mit Avidemux zwei Dateien zusammenzufügen, aber der Ton war nicht mehr synchron.
GiddyUpHorsey
Synchronisierungsprobleme können auftreten, wenn die Menge des verfügbaren Audiomaterials nicht mit der Länge der Videobilder übereinstimmt oder wenn Streams beschädigt werden. Möglicherweise können Sie dies mit den Stream-Fix-Funktionen von VideoRedo oder ProjectX beheben.
Bobince
1
Aber diese Methode hat funktioniert: superuser.com/a/255566/1780 Hurra!
Christopher Galpin
4
Wenn Sie mit AviDemux zwei Mp4-Dateien verbinden, vergessen Sie nicht, die Option Mp4 Demux in der linken unteren Ecke auszuwählen. Andernfalls könnte es versuchen, es in ein avi umzuwandeln!
28

Sie können dies mit ffmpeg tun:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v 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, wenn Sie sich auf einem System befinden, das diese nicht unterstützt, müssen Sie Zwischendateien verwenden (wie z. B. Windows):

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4
Übelsuppe
quelle
kann jemand erklären, wie das gemacht wird avconvstatt ffmpeg? Ich konnte die ersten beiden Schritte -absf
ausführen
@becko Siehe meine bearbeiten. Jetzt sollten Sie einen Stream- Bezeichner verwenden (siehe hier libav.org/avconv.html#Advanced-options ).
Slhck
2
1 nur für die Zukunft, können Sie ersetzen avconvfür die ffmpegin den obigen Befehle und es wird funktionieren.
Becko
15

Concat Demuxer

Der Concat Demuxer wurde zu ffmpeg 1.1 hinzugefügt. Wenn Ihre Version von ffmpeg zu alt ist, können Sie die neueste statische Binärdatei hier herunterladen : http://www.ffmpeg.org/download.html

Anleitung

Erstellen Sie eine Datei mylist.txtmit allen Dateien, die Sie verknüpfen möchten, in der folgenden Form (Zeilen, die mit einem Bindestrich beginnen, werden ignoriert):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Beachten Sie, dass dies entweder relative oder absolute Pfade sein können. Dann können Sie Ihre Dateien verschlüsseln mit:

ffmpeg -f concat -i mylist.txt -c copy output

Es ist möglich, diese Listendatei mit einer Bash for-Schleife oder mit printf zu generieren. Eine der folgenden Möglichkeiten generiert eine Listendatei, die alle * .wav im Arbeitsverzeichnis enthält:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Quelle: ffmpeg wiki

erik
quelle
8

YAMB zusammen mit MP4BOX ist eine gute Option.
Laden Sie beide herunter und entpacken Sie sie (keine Installation erforderlich und zusammen sind sie ungefähr 5 MB groß). Wählen Sie in YAMB Einstellungen und legen Sie den Ordnerpfad für MP4box fest.
Um mp4-Dateien zu verbinden, wählen Sie Bearbeiten> Zum Verbinden klicken.

Eran
quelle
1
Scheint die beste Lösung zu sein, das .mp4-Containerformat
beizubehalten
1
Nach Schwierigkeiten habe ich diese Konfiguration verwendet: MP4Box_path = E: \ Software \ Videobearbeitung \ Yamb-2.1.0.0_beta2 \ MP4Box \ MP4Box.exe, um 4 500 MB MP4-Dateien zusammenzuführen, die mit AVIDemux erstellt wurden. Es hat nicht funktioniert. Das Programm saß nur 45 Minuten da und tat nichts, bis ich endlich aufgab.
Djangofan,
1
Ich hatte Probleme mit dieser Methode wegen Audio-Synchronisierungsproblemen. Es war ein Albtraum ... es nicht noch einmal zu versuchen.
Djangofan,
6

SUPER © (Vereinfachter Universal Player Encoder & Renderer) bietet den folgenden zusätzlichen Ausgabeprozess:

Jede unterstützte Multimedia-Eingabedatei kann verarbeitet werden:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 

Natürlich ist MP4 ein unterstütztes Format.

SUPER © ist Freeware.


quelle
5
Die Benutzeroberfläche ist die schrecklichste, die ich in meinem Leben gesehen habe. Ich mache keine Witze, es ist einfach schrecklich. Ich betone es noch einmal: Ich kann kein schlechteres Interface nennen, ich meine es ernst, ich habe noch nie etwas unter der "SUPER-Schwelle" gesehen.
Camilo Martin
5

Versuchen Sie es mit dem Matroska-Videocontainer.

Erstens benötigen Sie mkvtoolnix . Laden Sie es herunter und installieren Sie es. Anschließend müssen Sie die mkvmerge-GUI starten (es sei denn, Sie mögen Befehlszeilentools, was für mich in Ordnung ist - obwohl Sie möglicherweise den Abschnitt zum Verknüpfen von Dateien in der mkvmerge-Dokumentation lesen möchten ).

Fügen Sie Ihre erste Datei hinzu, indem Sie auf "Hinzufügen" klicken. Klicken Sie dann auf "Anhängen" und öffnen Sie Ihre zweite Datei. Legen Sie die Ausgabedatei fest, klicken Sie unten auf "Muxen starten" und los geht's!

Wenn der Container für Ihre Bedürfnisse nicht geeignet ist, können Sie ihn neu codieren oder versuchen, ihn in ein anderes Format zu konvertieren ... Obwohl MKV ein sehr schöner Container ist!

Durchbruch
quelle
es muss gemuxt werden? Ich kann nicht ohne Muxing verbunden werden?
Djangofan,
Nun, wenn Sie einen MKV - Container verwenden, technisch Sie sind Remuxen es. Probieren Sie es aus, es gibt keine Echtzeitstrafe ...
Durchbruch
1

Wenn Sie sie auf Ihrem System abspielen können / wenn ein Codec installiert ist, ist Windows Movie Maker möglicherweise die schnellste (und kostenlosste) Möglichkeit, die beiden Dateien zu verbinden. Sie können dann Virtualdub verwenden, um in ein anderes Format zu konvertieren.

William Hilsum
quelle
Audacity scheint für Audiodateien zu sein. Dies ist eine Videodatei.
Paolo Bergantino
Tut mir leid, ich habe falsch gelesen, habe gerade den MP-Teil und mein Gehirn gesehen, obwohl Kühnheit.
William Hilsum
Antwort wird
William Hilsum
AFAIK, Movie Maker unterstützt MP3 nicht und das Konvertieren in ein anderes Format bedeutet Qualitätsverlust, den die Frage als unerwünscht bezeichnet.
Eran
Ich habe MovieMaker unter Windows 7 ausprobiert und das Audio wird nicht mehr synchron, wenn MP4-Dateien zu einem WMV zusammengefügt werden. Diese Option funktioniert nicht.
Djangofan,
1

Eine andere Lösung ist Open Video Joiner . Es macht auch Übergangseffekte.

Bildbeschreibung hier eingeben

Harrymc
quelle
Es ist jedoch eine Shareware. und für 30 $ ist es nicht billig, nur Videodateien zusammenzuführen
Eran
Es soll Freeware sein. Tut mir leid, wenn ich in die Irre geführt wurde.
Harrymc