Comment convertir un fichier VOB à avi?

10

J'essaie de convertir un fichier VOB copié à partir d'un DVD en avi dans Ubuntu 13.10. J'ai essayé dvdrip, ce qui a échoué en raison d'une erreur de comptage d'images ou quelque chose. J'ai également essayé acidrip, mais il a toujours choisi une piste audio que je ne voulais pas utiliser. Je préférerais avoir une solution en ligne de commande pour créer un avi avec les fonctionnalités suivantes:

  • utilisable avec mplayer (c'est-à-dire en utilisant les fonctions pas à pas)
  • avec le sous-titre requis (ou personne du tout)
  • avec la bonne piste audio
  • avec vidéo et audio synchronisés

J'ai essayé quelques - uns ffmpeget les avconvcommandes et a réussi à créer un fichier AVI, mais la vidéo et de l' audio étaient complètement désynchronisés. Alors, quelles options dois-je utiliser pour convertir le fichier VOB en fichier avi?

J'apprécierais quelques explications sur les options suggérées!

Information additionnelle:

  1. La ffmpegcommande donne la sortie suivante pour le fichier d'entrée

    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. La commande suivante

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

    par exemple, a entraîné un crash de ma session Ubuntu.

  3. La commande suivante

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

    par exemple, a entraîné l'erreur suivante:

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

    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
    

    par exemple, a entraîné l'erreur suivante:

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

    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
    

    par exemple, semblait fonctionner pour certains cadres. Mais très vite j'ai rencontré de nombreuses erreurs de forme

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. La commande suivante

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

    a fait une conversion, mais (i) utilise des sous-titres bien que je ne veuille pas les utiliser (ii) s'est trompé (l'audio et la vidéo sont terriblement mal placés) et (iii) semble être plus lent que le film ne le fait réellement (peut prendre 2 heures pour un film de 90 minutes).

  7. J'ai essayé de commander donné ici (troisième message de Xeratul), mais il s'est arrêté avec l'erreur

    FATAL: Cannot initialize video driver.
    
  8. J'ai essayé la suggestion faite ci-dessous pour regarder la page mencoder . Cette page propose d'utiliser deux passes:

    le premier lit des informations sur le film, le second utilise ces informations pour encoder.

    mais il n'est pas expliqué non plus quelles informations extraire ni comment les utiliser dans le deuxième passage. J'ai donc utilisé la commande suivante:

    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
    

    qui a converti la vidéo, mais avec un sous-titre indésirable. On ne sait pas du tout comment je peux éviter d'utiliser un sous-titre.

Alex
la source
ffmpegest dépréciée depuis il y a longtemps, vous êtes censé utiliser son propre successeur avconv.
user2485710
Alors, comment utiliser avconvensuite pour convertir les fichiers VOB en avi. La commande a avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avidonné une erreur Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex
il y a un exemple dans la page de manuel pour avconv, pour les fichiers VOB déchiffrés, avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviessayez ceci
user2485710
Cela donne une erreurError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex
Essayez 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/nullalors 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- a pris cela en partie de l'Arch doc @ dg99 lié.

Réponses:

6

Pour se débarrasser des sous-titres, je pense que vous pouvez ajouter le -nosubcommutateur, juste après le nom du fichier .VOB.

Exemple

$ 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

Détails

Ces incantations sont souvent très denses donc pour casser celle-ci un peu

  • fichier d'entrée: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • fichier de sortie: -o video.avi
  • pas de sous-titres: -nosub
  • ne pas encoder le son: -nosound
  • encoder avec le codec donné: -ovc x264

liste des autres codecs

$ 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
  • Options de codage x264: x264encopts
  • définir le mode pour les vecteurs de mouvement direct :direct=auto
  • nombre de passes :pass=2
  • débit binaire d'encodage cible: bitrate=900
  • pré. trames utilisées comme prédicteurs dans les trames B et P (déf: 3):frameref=5
  • nombre de trames B simultanées: bframes=1
  • estimation du mouvement fullpixel alg .: me=umh

    REMARQUE: umh - recherche multi-hexagone inégale (lente)

  • activer tous les types de macroblocs: partitions=all

  • quantification optimale du taux de distorsion: trellis=1

    REMARQUE: 2 - activé pendant toutes les décisions de mode (lent, nécessite subq> = 6)

  • valeur d'incrémentation / décélération du quantificateur: qp_step=4

    REMARQUE: valeur maximale par laquelle le quantificateur peut être incrémenté / décrémenté entre les trames (par défaut: 4)

  • compression du quantificateur (par défaut: 0,6): qcomp=0.7

  • prédiction de mouvement pour les macroblocs dans les images B: direct_pred=auto
  • intervalle maximum entre les images clés dans les images: keyint=300

  • les options après cela sont des filtres vidéo: -vf

REMARQUE: Pour les commutateurs de filtre vidéo, il est important que vous l'utilisiez harddupcomme dernier filtre: cela forcera MEncoder à écrire chaque image (même en double) dans la sortie. En outre, il est nécessaire d'utiliser scale=$WIDTH,-10avec $WIDTHas -1pour conserver la largeur d'origine ou une nouvelle largeur, généralement plus petite: elle est nécessaire car le codec H.264 utilise des pixels carrés et les DVD utilisent à la place des pixels rectangulaires.

  • scale=-1
  • -10
  • harddup
slm
la source
Merci beaucoup pour cet exemple bien expliqué sur la façon d'obtenir la vidéo. Votre commande suggérée semble fonctionner parfaitement pour extraire la vidéo. Cependant, je n'ai pas l'audio maintenant. Si j'utilise votre commande sans -noaudioet avec, -oac copyj'obtiens l'audio, qui n'est pas synchronisé avec la vidéo. Il est soit déplacé, à une vitesse différente, soit les deux. Une suggestion sur la façon dont je peux également obtenir l'audio correctement? Et qu'en est-il de plusieurs fichiers VOB? Comment emballer le contenu dans un seul .avifichier (ou autre format)?
Alex
@Alex - juste une pensée, mais je ne pense pas que vous puissiez simplement faire un -oac copyavec un 2 passes, puisque vous ré-encodez la vidéo, vous devrez ré-encoder l'audio avec. Quant à « emballer » les, les fichiers vob devraient être fusionnés aimé: cat *.vob all.vob. Ensuite, utilisez all.vobdans le cmencoder mencoder. Il existe également d'autres façons de procéder.
slm
3

Si vous avez l'intention d'utiliser mplayer, alors vous devriez essayer mencoder( http://www.mplayerhq.hu ). L'une de ses meilleures fonctionnalités est que les options de lecture que vous connaissez mplayerse comportent à peu près de la même manière lors de l'encodage. En outre, il existe de nombreux documents et fils de discussion couvrant exactement ce que vous demandez:

dg99
la source
Les liens fournis contiennent des dizaines d'exemples différents et des centaines d'options. Ce n'est pas une réponse claire et précise à ma question.
Alex
1
C'est vrai, mais je n'ai pas écrit la réponse pour obtenir la réputation, je l'ai écrite pour vous aider. Pensez à lire certaines mencoderpages. Il existe plusieurs groupes de pirates qui n'utilisent que mencoderpour tout leur travail; c'est aussi simple, puissant et automatisable.
dg99
2

Je sais que c'est une publication ancienne, mais en recherchant ce problème sur Internet, la question ci-dessus apparaît et certaines autres entrées sont encore plus anciennes.

J'ai essayé différents outils mais au final je suis le plus satisfait de cette commande:

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

C'est une légère modification de celle que j'ai trouvée ici .

Je viens de remplacer le codec audio ( libflacabsent sur mon système, je l'ai donc remplacé par libmp3lame( source ) et la -crfvaleur pour augmenter la qualité. D'autres formats peuvent également être utilisés, comme mp4.

Lors de mon test (avec un processeur plutôt médiocre), un fichier vob de 2,6 Go (déjà concaténé sur trois autres fichiers) a été converti en une vidéo avi de 960 Mo de qualité comparable en environ 50 minutes.

20 est la qualité moyenne acceptable (dans les articles d'aide Handbrake que j'ai vus). De plus grands nombres réduisent la taille au détriment de la qualité. Au-dessus de 20, la perte de qualité est claire.

Il est préférable d'utiliser cette commande dans un terminal pour voir la progression, la tuer plus facilement, etc.

Ce que j'aime dans cette commande, c'est qu'elle offre un bon équilibre entre qualité, temps et taille et qu'elle peut être facilement utilisée à partir du menu contextuel du gestionnaire de fichiers.

La procédure dépend du gestionnaire de fichiers. La commande peut être facilement ajoutée à Thunar et Nautilus en tant qu '«action personnalisée». Je l'ai ajouté à Dolphin avec un ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopfichier comme celui-ci:

[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

entrez la description de l'image ici


la source