Wie verbinde ich Videodateien vom Terminal?


9

Ich habe versucht, avidemux2_cli, mencoder, ffmpeg, cat .. Aber das funktioniert nicht immer (In den meisten Fällen ist der Fehler, dass der Audio-Codec nicht der gleiche ist) Vielleicht habe ich falsche Optionen in die Befehle eingefügt.

Also die Befehle:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

Das Katzenproblem ist, dass es keinen Fehler anzeigt, aber nicht immer funktioniert. Wie das complete.avi ist es mit Sample.avi genau das gleiche

Fmmpeg macht nichts. Die complete.avi ist mit Sample.avi immer dieselbe

Mencoder-Fehler: Alle Dateien müssen den gleichen Audio-Codec und das gleiche Format für die -oac-Kopie haben. Das complete.avi ist also dasselbe mit Sample.avi

avidemux2_cli Es gibt keinen Fehler, aber die complete.avi ist wieder dieselbe mit Sample.avi.

Zusammenfassend lässt sich sagen, dass alle complete.avi mit Sample.avi gleich sind. Und das Problem ist, dass sie nicht den gleichen Audio-Codec haben (ich frage). Irgendwelche Ideen?


1
Ich denke, dass Sie den Video-Codec und den Audio-Codec von Eingabedateien in die gleichen Codecs ändern müssen, wenn Sie zwei Videos sicher kombinieren möchten
Vine_user

Und wie kann ich das machen?
Leon Vitanos

Sie können mencodermit den Optionen -ovc und -oac verwenden. Siehe: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
Vine_user

Antworten:


10

Wenn Sie zwei Videos sicher kombinieren möchten, müssen Sie den Video-Codec und den Audio-Codec der Eingabedateien in dieselben Codecs ändern.

Verwenden Sie beispielsweise xvid (Video-Codec) und mp3lame (Audio-Codec):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

Sie können die Eingabevideos mit den folgenden Befehlen codieren:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

Um Ihre Videos abzugleichen, können Sie die Optionen "Bitrate" usw. (und auch die Codecs) ändern.

Wenn die codierten Videonamen "video1.avi" und "video2.avi" sind und der Name des Ausgabevideos "join-video.avi" lautet,

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

Mit diesem Befehl können Sie die verknüpfte Videodatei erstellen.


2
Ich dachte nur, ich würde verstärken, dass der Name dieses Dienstprogramms mencoder(dh Media ENcoder) ist. Viele Leute bleiben stecken, wenn sie versehentlich tippen memcoder.
Val

Müssen die Rahmengrößen nicht auch übereinstimmen?
Elder Geek

4

Ich musste drei Videostücke mit identischen Codecs verbinden. Beim Lesen der vorherigen Antworten ist mir Folgendes gelungen:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

Viel schneller und einfacher als Openshot!

Zuerst habe ich die Option '-oac copy' ausprobiert, aber es scheint, dass der Audio-Codec in meinen Videos dies nicht zulässt. Ich habe eine Fehlermeldung erhalten, in der '-oac pcm' empfohlen wird. Der PCM-Codec ist jedoch keine gute Option: Die resultierende Datei ist sehr groß und 2/3 davon sind unkomprimiertes Audio.

Hoffe das hilft


2
MEncoder svn r34540 (Ubuntu), erstellt mit gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer wurde ohne libfaac kompiliert. Siehe README oder DOCS.
Philippe Gachoud

1

Eine Lösung, die ich hier gefunden habe, hat mir geholfen, zwei mp4-Dateien ohne Verlust zu verbinden:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Ich habe versucht, Avidemux zu verwenden, hatte jedoch Probleme mit dem Ton im zusammengeführten Video.


1

Ihre Dateien werden nicht ordnungsgemäß verknüpft, da etwas nicht übereinstimmt.

Wie viele andere hatte ich Probleme mit der ordnungsgemäßen Synchronisierung von Sound in zusammengeführten Videos. und während MP4Box gut funktioniert, wenn die Clips identische Spezifikationen haben, würde ich in einigen Fällen von der Meldung "Keine geeignete Zielspur gefunden - neue erstellen" überrascht. In diesem Fall würde Totem (auch bekannt als Videos) dieses Segment in der verknüpften Datei nicht abspielen Nach einigem Ausprobieren und weiteren Nachforschungen habe ich die folgende Methode für den Umgang mit dem Verbinden von Videos entwickelt, die bisher jedes Mal mit akzeptabler (für mich) Qualität funktioniert hat.

Wenn die Bildgrößen nicht übereinstimmen (Verbindungsfehler bei Videospuren):

Normalisieren Sie Videos, ohne das Audio zu stören (-c: eine Kopie), indem Sie Einschränkungen (teilbar durch 8 für maximale Codec-Kompatibilität) für nicht übereinstimmende Segmente festlegen

Beispielbefehle

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

Wenn Audio nicht übereinstimmt (Verbindungsfehler in Bezug auf Audiospuren):

Audio normalisieren

Verarbeiten Sie Audio, ohne das Video zu stören (c: v-Kopie), sodass alle Clips dem gewünschten Codec, der gewünschten Frequenz und Bitrate mit c: einer Codec -ar-Frequenz wie -ar 48000 und einer Bitrate mit b: 128k für Stereo (64K pro) entsprechen Kanal scheint ein gutes Ziel zu sein) oder was auch immer passt.

Beispiel: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(Beachten Sie, dass libmp3lame ist ein Codec für MP3 - Audio) Sie können eine Liste von avconv unterstützten Encodern erhalten , indem Sie den Befehl ausgeben avconv -codecsoder Dinge zu verengen , um einen bestimmten codiert avconv -codecs|grep *codecname*zum Beispielavconv -codecs|grep mp3

Nachdem wir die Dateien normalisiert haben, können wir sie verbinden. In diesem Beispiel werde ich die Dateien mit MP4Box verbinden. Wenn Sie es nicht haben, können Sie es durch Ausgabe des Befehls erhaltensudo apt-get install gpac

Verbinden Sie die Dateien mit dem Befehl MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(beachten Sie, dass vor der ersten Datei keine Katze steht und jeder zusätzlichen Datei -cat und der Zieldatei -out vorangestellt ist)

Wenn Sie MP4Box (empfohlen für MP4) zum Beitreten verwenden, müssen Sie möglicherweise alle Clips mit avconv verarbeiten, ob die Spezifikationen übereinstimmen oder nicht, um den Fehler „Keine geeignete Zielspur gefunden - neue erstellen (Typ vide)“ zu vermeiden.

Hinweis: Ich habe festgestellt, dass Avidemux aufgrund der B-Frames als Referenz Probleme mit Videos hat, die mit H.264 / AVC-Dateien (pro Totem) codiert wurden. Dies scheint zu einem nicht synchronen Audio beim Beitritt zu führen, selbst wenn Audio und Video ohne Remux kopiert werden sollen. Abstürze, wenn der abgesicherte Modus nicht gewählt wird, und nicht synchron, wenn der abgesicherte Modus verwendet wird

Quellen:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

Hinweis: Soweit ich weiß, gelten für andere Formate (Container) ähnliche Einschränkungen für die Anpassung von Bildgröße und Audioraten. Dies kann daher auch für AVI funktionieren, wenn Sie nach dem Normalisieren von Video und Audio versuchen, die Verbindung über Cat oder Mencoder herzustellen .

Optional: Verwenden Sie Handbremse, um die verknüpfte Datei bei Bedarf mit einer variablen Bildrate und einer konstanten Qualitätseinstellung von 25 für eine kleinere Größe neu zu codieren (empfohlene Einstellungen - passen Sie sie nach Bedarf an Ihre Material- und Qualitätserwartungen an).


1

Sie sollten wie folgt eingeben:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

Wenn Sie weitere Dateien anhängen möchten:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

Ich konnte den VLC Media Player verwenden, um mehrere Videodateien zu verbinden / zusammenzuführen. VLC kann von der Ubuntu-Software heruntergeladen oder von einem Terminal installiert werden, indem Sie Ctrl+ Alt+ drücken Tund Folgendes eingeben:

sudo apt update
sudo apt install vlc

Öffnen Sie nach der Installation von VLC ein Terminal im Ordner mit den Videodateien und geben Sie Folgendes ein:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

Dies öffnet die VLC-GUI und Sie können sie schließen, sobald die Dateien zusammengefügt / zusammengeführt wurden. Weitere Informationen finden Sie hier .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.