Ist es möglich, Videodateien mit cat zusammenzuführen?

17

Ich frage mich, ob es möglich ist, Videodateien mit dem catBefehl zusammenzuführen. Ich meine, wird die resultierende Datei nahtlos abgespielt?

Hamed Momeni
quelle
1
Hast du es versucht?
Mr Lister
3
Ich habe es tatsächlich getan. Aber irgendwie enthielt das Ergebnis nicht die zweite Datei, obwohl die Dateigröße die Summe von beiden war.
Hamed Momeni

Antworten:

20

Ja, es ist möglich. Es werden jedoch nicht alle Formate unterstützt.

ffmpeg FAQ :

Einige Multimedia-Container (MPEG-1, MPEG-2 PS, DV) ermöglichen das Zusammenfügen von Videodateien durch bloße Verkettung.

Beim Konvertieren in RAW-Formate besteht außerdem eine hohe Wahrscheinlichkeit, dass die Dateien verkettet werden können.

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

Aber mit catauf diese Weise erstellten Zwischendateien, die nicht notwendig sind. Dies ist ein besserer Ansatz, um das Erstellen dieser Zwischendateien zu vermeiden:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
Marco
quelle
1
Erstellen Sie in der zweiten Version noch keine Zwischendateien?
John Gowers
6

Es gibt zwei Arten von Mediendateien

  • streambar

  • nicht streambar

Der Hauptunterschied besteht darin, wie die beiden Dateiformate Metainformationen einbetten. Bei nicht-streambaren Formaten werden die Metainformationen ("Header") an einer bestimmten Position in der Datei gespeichert, normalerweise am Anfang, manchmal am Ende. Sie können solche Dateien nicht einfach verketten, da sich die Metainformationen aus einer der Dateidateien an einem nicht standardmäßigen Speicherort befinden und daher ignoriert werden.

OTOH, streamable Formate müssen in der Lage sein, Listener zu handhaben, die die Datei "irgendwo in der Mitte" abspielen. Aus diesem Grund senden diese Formate die Metainformationen immer wieder neu und ermöglichen sogar die Aktualisierung innerhalb der Datei / des Streams. Diese Formate können einfach verkettet werden.

umläute
quelle
Beispiel: ogg: stackoverflow.com/questions/27980960/…
BlackShift
1

Wie BЈовић sagte, hat im Allgemeinen jede Datei einen eigenen Header. Versuchen Sie es mit diesem Beispiel aus Ubuntu :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 
rpet
quelle
0

Nein, das ist nicht möglich, da jede Videodatei einen Header hat. Zum Zusammenführen von Videos benötigen Sie ein Tool (wie zum Beispiel ffmpeg oder mencoder ).

BЈовић
quelle
9
Nicht ganz richtig. Es gibt Videoformate ohne Header, zB rawvideo oder yuv4mpegpipe, die Rohdaten ausgeben. Aus diesem Grund müssen Sie beim Lesen dieser Formate die Bildgröße angeben, da die Größe aufgrund des fehlenden Headers nicht bekannt ist.
Marco
2
Wieso habe ich es dann gerade mit DV-Dateien erfolgreich gemacht?
Pithikos
1
@ Pithikos keine Ahnung. Vielleicht
übst