web-dev-qa-db-de.com

FFMpeg eine DVD öffnen VOB Kette?

Ich bin neu in FFMpeg, das ist vielleicht eine blöde Frage, aber ich sehe die Antwort nicht in der Dokumentation.

Ich möchte Frames aus einer DVD-VOB-Datei dekodieren. Das Öffnen des ersten VOB in der Gruppe funktioniert einwandfrei, aber wie kann ich ffmpeg anweisen, mit dem nächsten VOB fortzufahren und alle VOBs auf einer DVD zu lesen?

Ich habe die VOB Dateien in einem Ordner auf einer Festplatte.

24
Sugrue

Das VOB-Format ist eine Untergruppe von mpeg , daher sollten Sie in der Lage sein, die VOBs, die Sie einlesen möchten, so zu kombinieren, wie Sie es von mpeg-Daten gewohnt wären, indem Sie sie miteinander verketten.

cat first.VOB second.VOB third.VOB | ffmpeg -i - outfile.mp4

Heben Kommentar von Matt Gallagher zur Steigerung der Lebensdauer/Sichtbarkeit:

Neuere Versionen von ffmpeg unterstützen die Verkettung als Operator für die Eingabedatei. Sie könnten also ... ffmpeg -i concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4

22
blahdiblah

Sie können die eingebaute Verkettungsfunktion von ffmpegs tatsächlich verwenden, was Sie meiner Meinung nach suchen:

ffmpeg -i "concat:$(echo *.VOB|tr \  \|)" -f mpeg -c copy -sn -y combined.mpg

Siehe: http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20concatenate%20(join ,%20merge)%20media%20files

12
Justin Buser

Die integrierte Verkettungsfunktion scheint auf * NIX zu basieren und funktionierte für mich nicht unter Windows. Unter Windows VobMerge schien es zu funktionieren, um die relevanten VOB -Dateien zusammenzuschließen (was für den Hauptfilm auf einer DVD scheinbar mit einer Größe von 1 GB zu beginnen schien).

Addenda

Sie können VOB -Dateien auch in Windows direkt von der Befehlszeile aus verbinden :

copy /b "vob1.vob" + "vob2.vob" + "vob3.vob" "voboutput.vob"

Sie können die Anführungszeichen weglassen, wenn die Dateinamen keine Leerzeichen enthalten. Denken Sie jedoch daran, den /b und alle +-Zeichen zu beachten.

4
SharpC

in Windows habe ich es vorgezogen, die Verkettung "umzuwandeln" und mich nicht auf vordefinierte Dateinamen zu verlassen:

copy /b  e:\VIDEO_TS\vts*.vob  temp.vob
ffmpeg -i temp.vob .... newfile.ogg

/ b bedeutet: binäre Kopie; Ansonsten werden Newlines und solche anders behandelt.

Vorsichtsmaßnahmen:

  • manchmal gibt es VOB -Dateien, die nicht Teil des Films sind, und ich konnte keine automatisierte Methode finden, um herauszufinden, welche die ist
  • auf langsamen E/A-Systemen bedeutet dies ein enormes Zeitproblem: Es dauert Zeit, die temporäre Datei zu schreiben und zu lesen.
0
Berry Tsakala