Come convertire un file VOB in avi?


10

Sto cercando di convertire un file VOB copiato da un DVD in un avi in ​​Ubuntu 13.10. Ho provato dvdrip, che non è riuscito a causa di un errore di conteggio dei frame o qualcosa del genere. Ho provato anche acidrip, ma ha sempre scelto una traccia audio che non volevo usare. Preferirei avere una soluzione a riga di comando per creare un avi con le seguenti funzionalità:

  • utilizzabile con mplayer (ovvero usando le funzioni step)
  • con i sottotitoli come richiesto (o nessuno)
  • con la traccia audio corretta
  • con video e audio sincronizzati

Ho provato alcuni ffmpege avconvcomandi e sono riuscito a creare un avi, ma il video e l'audio erano completamente fuori sincrono. Quindi quali opzioni dovrei usare per convertire il file VOB in un file avi?

Gradirei alcune spiegazioni sulle opzioni suggerite!

Informazioni aggiuntive:

  1. Il ffmpegcomando fornisce il seguente output per il file di input

    Input #0, mpeg, from 'Videos/Test/VIDEO_TS/VTS_01_1.VOB':
      Duration: 00:04:53.32, start: 0.045500, bitrate: 29284 kb/s
        Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 7500 kb/s, 27.68 fps, 59.94 tbr, 90k tbn, 59.94 tbc
        Stream #0.1[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
        Stream #0.2[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
        Stream #0.3[0x81]: Audio: ac3, 0 channels
    [buffer @ 0x15ca6e0] w:720 h:480 pixfmt:yuv420p
    
  2. Il seguente comando

    ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
    

    ad esempio ha provocato un arresto anomalo della mia sessione Ubuntu.

  3. Il seguente comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
    

    ad esempio ha provocato il seguente errore:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. Il seguente comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k output.avi
    

    ad esempio ha provocato il seguente errore:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. Il seguente comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a ac3 -b:a 128k output.avi
    

    per esempio sembrava funzionare per alcuni frame. Ma molto presto ho riscontrato molti errori del modulo

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Il seguente comando

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
    

    ha fatto un po 'di conversione, ma sta (i) usando i sottotitoli anche se non volevo usarli (ii) ha sbagliato l'audio (l'audio e il video sono terribilmente fuori posto) e (iii) sembra essere più lento di quanto il film vada effettivamente (potrebbe richiedere 2 ore per un film di 90 minuti).

  7. Ho provato a comandare dato qui (terzo post di Xeratul), ma si è fermato con l'errore

    FATAL: Cannot initialize video driver.
    
  8. Ho provato il suggerimento di seguito per guardare la pagina di mencoder . Questa pagina suggerisce di usare due passaggi:

    il primo legge le informazioni sul film, il secondo usa quelle informazioni per codificare.

    ma né viene spiegato quali informazioni estrarre né come usarle nel secondo passaggio. Quindi ho usato il seguente comando:

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosound -ovc x264 \
    -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf scale=-1:-10,harddup -o video.avi
    

    che ha convertito il video, ma con un sottotitolo indesiderato. Non è affatto chiaro come posso evitare di usare un sottotitolo.


ffmpegè deprecato da molto tempo fa, si suppone di utilizzare il proprio successore: avconv.
user2485710

Quindi, come utilizzare avconvquindi per convertire i file VOB in avi. Il comando ha avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avidato un errore Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex

c'è un esempio nella manpage di avconv, per i file VOB decifrati avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviprova questo
user2485710

Questo dà un erroreError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex

Prova mencoder yourvob -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o /dev/nullquindi mencoder yourvob -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o video.avi- preso in parte dall'Arch doc @ dg99 collegato.

Risposte:


6

Per sbarazzarsi dei sottotitoli credo che tu possa aggiungere l' -nosubopzione, subito dopo il nome del file .VOB.

Esempio

$ mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosub -nosound -ovc x264 \
-x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup -o video.avi

Dettagli

Questi incantesimi sono spesso molto densi, quindi spezziamo un po 'questo

  • file di input: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • file di uscita: -o video.avi
  • senza sottotitoli: -nosub
  • non codificare il suono: -nosound
  • codificare con il codec specificato: -ovc x264

elenco di altri codec

$ mencoder -ovc help
MEncoder SVN-r36171-4.8.1 (C) 2000-2013 MPlayer Team

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   libdv    - DV encoding with libdv v0.9.5
   xvid     - XviD encoding
   x264     - H.264 encoding
  • Opzioni di codifica x264: x264encopts
  • impostare la modalità per i vettori di movimento diretto :direct=auto
  • numero di passaggi :pass=2
  • bitrate di codifica target: bitrate=900
  • pre. frame usati come predittori nei frame B e P (def: 3):frameref=5
  • numero concorrente di fotogrammi B: bframes=1
  • stima del movimento fullpixel alg .: me=umh

    NOTA: umh - ricerca multi-esagono irregolare (lenta)

  • abilita tutti i tipi di macroblocco: partitions=all

  • quantizzazione ottimale rate-distorsione: trellis=1

    NOTA: 2 - abilitato durante tutte le decisioni relative alla modalità (lento, richiede subq> = 6)

  • valore di incremento / decelerazione del quantizzatore: qp_step=4

    NOTA: valore massimo in base al quale il quantizzatore può essere incrementato / decrementato tra i frame (impostazione predefinita: 4)

  • compressione quantizzatore (impostazione predefinita: 0.6): qcomp=0.7

  • previsione del movimento per i macroblocchi nei frame B: direct_pred=auto
  • intervallo massimo tra i fotogrammi chiave nei frame: keyint=300

  • le opzioni dopo questa sono filtri video: -vf

NOTA: per gli interruttori del filtro video, è importante utilizzare harddupcome ultimo filtro: forzerà MEncoder a scrivere ogni frame (anche duplicati) nell'output. Inoltre, è necessario utilizzare scale=$WIDTH,-10con $WIDTHas -1per mantenere la larghezza originale o una nuova, di solito più piccola, è necessaria poiché il codec H.264 utilizza pixel quadrati e DVD invece di pixel rettangolari.

  • scale=-1
  • -10
  • harddup

Grazie mille per questo esempio ben spiegato su come ottenere il video. Il comando suggerito sembra funzionare perfettamente per l'estrazione del video. Tuttavia, non ho l'audio ora. Se uso il tuo comando senza -noaudioe con -oac copyottengo l'audio, che non è sincronizzato con il video. O è spostato, a una velocità diversa o entrambi. Qualche suggerimento su come posso ottenere anche l'audio corretto? E che dire di più file VOB? Come comprimere il contenuto in un singolo .avifile (o altro formato)?
Alex

@Alex - solo un pensiero, ma non penso che tu possa semplicemente fare un -oac copypassaggio 2, dato che stai ricodificando il video, dovrai ricodificare l'audio insieme ad esso. Per quanto riguarda "imballaggio" di loro, i file VOB dovrebbero essere unificati è piaciuto: cat *.vob all.vob. Quindi utilizzare all.vobnel cmd mencoder. Ci sono anche altri modi per farlo.
slm

3

Se si intende utilizzare mplayer, è necessario provare mencoder( http://www.mplayerhq.hu ). Una delle sue migliori caratteristiche è che le opzioni di riproduzione che conosci si mplayercomportano più o meno allo stesso modo durante la codifica. Inoltre, c'è molta documentazione e thread e-mail che coprono esattamente ciò che stai chiedendo:


I collegamenti forniti contengono dozzine di esempi diversi e centinaia di opzioni. Non è una risposta chiara e precisa alla mia domanda.
Alex,

1
È vero, ma non ho scritto la risposta per ottenere reputazione, l'ho scritto per aiutarti. Prendi in considerazione la lettura di alcune mencoderpagine. Esistono diversi gruppi di pirati che usano solo mencoderper tutto il loro lavoro; ecco come può essere semplice, potente e automatizzabile.
dg99

2

So che si tratta di vecchi post, ma la ricerca di questo problema su Internet si apre la domanda sopra e alcune altre voci sono ancora più vecchie.

Ho provato diversi strumenti ma alla fine sono molto soddisfatto di questo comando:

ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

È una leggera modifica di quella che ho trovato qui .

Ho appena sostituito il codec audio ( libflacera assente sul mio sistema, quindi l'ho sostituito con libmp3lame( sorgente ) e il -crfvalore per aumentare la qualità. Altri formati possono essere utilizzati, come mp4.

Nel mio test (con un processore piuttosto mediocre) un file vob da 2,6 GB (già concatenato su altri tre file) è stato convertito in un video avi da 960 MB di qualità comparabile in circa 50 minuti.

20 è la qualità media accettabile (negli articoli della guida del freno a mano che ho visto). Numeri più grandi riducono le dimensioni a scapito della qualità. Oltre la perdita di qualità è evidente.

È meglio usare quel comando in un terminale per vedere l'avanzamento, ucciderlo più facilmente, ecc.

Quello che mi piace di questo comando è che fornisce un buon equilibrio tra qualità, tempo e dimensioni e che può essere facilmente utilizzato dal menu contestuale del file manager.

Come farlo dipende dal file manager. Il comando può essere facilmente aggiunto a Thunar e Nautilus come "azione personalizzata". L'ho aggiunto a Dolphin con un ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopfile come questo:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,video/mpeg
MimeType=video/mpeg
Actions=Convert2avi
X-KDE-Submenu=Convert vob (DVD video)
Encoding=UTF8

[Desktop Action Convert2avi]
Name=to avi
Icon=video
Exec=konsole -e ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.