2011-11-23 6 views
21

Sono nuovo di FFMpeg quindi potrebbe trattarsi di una domanda stupida, ma non vedo la risposta nella documentazione.FFMpeg apre una catena VOB DVD?

Desidero decodificare i frame da un file DVD vob. L'apertura del primo VOB nel gruppo funziona correttamente, ma come faccio a dire a ffmpeg di continuare con il prossimo VOB e leggere tutti i VOB su un DVD?

Ho i file VOB in una cartella su un disco rigido.

risposta

15

Il formato VOB è un sottoinsieme di mpeg, quindi dovresti essere in grado di combinare i VOB che vuoi leggere proprio come faresti con i dati mpeg: concatenandoli insieme.

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

sollevamento Matt Gallagher's comment per aumentare la longevità/visibilità:

recenti versioni di ffmpeg concatenazione di supporto come un operatore sul file di input. Così si potrebbe usare ... ffmpeg -i concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4

+0

Non copia prima i vob in un nuovo file combinato? (che richiederebbe diversi minuti per un DVD) – Sugrue

+3

No. L'output concatenato da 'cat' viene reindirizzato direttamente alla lettura di' ffmpeg' da stdin. Questo è ciò che indica '-i -'. Non ci dovrebbero essere differenze di velocità. – blahdiblah

+9

Le versioni più recenti di ffmpeg supportano la concatenazione come operatore nel file di input. Quindi potresti usare ... ffmpeg -i concat: VTS_01_0.VOB \ | VTS_01_1.VOB \ | VTS_01_2.VOB outfile.mp4 –

3

il built -la funzionalità di concatenazione sembra essere * basata su NIX e non ha funzionato su Windows per me. Su Windows VobMerge sembrava funzionare per unire i file VOB rilevanti (che per il film principale su un DVD sembrava essere il set a partire da 1 GB di dimensione).

Addenda

È inoltre possibile unire file VOB in Windows directly from the command line:

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

è possibile omettere le virgolette se non ci sono spazi nei nomi dei file, ma essere sicuri di ricordare il /b e tutti i segni +.

0

in finestre ho preferito concatenazione "refactoring", e anche non fare affidamento su nomi di file predefiniti:

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

/b significa: copia binaria; in caso contrario newline e tali sono trattati in modo diverso.

Avvertenze:

  • a volte ci sono file VOB che non fanno parte del film, e non ho potuto scoprire un metodo automatico per rilevare che è che
  • su sistemi lenti di I/O questo aggiunge un enorme tempo: ci vuole tempo per scrivere e leggere il file temporaneo.