Wie konvertiere ich eine VOB-Datei in avi?


10

Ich versuche, eine von einer DVD kopierte VOB-Datei in Ubuntu 13.10 in ein AVI zu konvertieren. Ich habe es versucht dvdrip, was aufgrund eines Frame-Count-Fehlers oder so etwas fehlgeschlagen ist. Ich habe auch Acidrip ausprobiert, aber es wurde immer eine Audiospur ausgewählt, die ich nicht verwenden wollte. Ich würde es vorziehen, eine Befehlszeilenlösung zu haben, um ein AVI mit den folgenden Funktionen zu erstellen:

  • verwendbar mit mplayer (dh mit den step-funktionen)
  • mit dem erforderlichen Untertitel (oder überhaupt niemandem)
  • mit der richtigen Audiospur
  • mit synchronem Video und Audio

Ich habe versucht , einige ffmpegund avconvBefehle und verwaltet ein avi zu schaffen, aber die Video- und Audio waren komplett aus dem Takt. Welche Optionen sollte ich verwenden, um die VOB-Datei in eine AVI-Datei zu konvertieren?

Ich würde mich über einige Erklärungen zu den vorgeschlagenen Optionen freuen!

Zusätzliche Information:

  1. Der ffmpegBefehl gibt die folgende Ausgabe für die Eingabedatei aus

    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. Der folgende Befehl

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

    führte zum Beispiel zu einem Absturz meiner Ubuntu-Sitzung.

  3. Der folgende Befehl

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

    führte beispielsweise zu folgendem Fehler:

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

    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
    

    führte beispielsweise zu folgendem Fehler:

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

    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
    

    zum Beispiel schien für einige Frames zu funktionieren. Aber sehr bald stieß ich auf viele Fehler des Formulars

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Der folgende Befehl

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

    hat einige Konvertierungen durchgeführt, verwendet aber (i) Untertitel, obwohl ich sie nicht verwenden wollte (ii) habe das Audio falsch verstanden (Audio und Video sind furchtbar verlegt) und (iii) scheint langsamer zu sein, als der Film tatsächlich läuft (möglicherweise dauert) 2 Stunden für einen 90-minütigen Film).

  7. Ich habe versucht, Befehl gegeben hier (dritter Beitrag von Xeratul), aber knapp mit dem Fehler

    FATAL: Cannot initialize video driver.
    
  8. Ich habe den folgenden Vorschlag ausprobiert, um auf die Mencoder-Seite zu schauen . Diese Seite schlägt vor, zwei Durchgänge zu verwenden:

    Der erste liest Informationen über den Film, der zweite verwendet diese Informationen zum Codieren.

    Es wird jedoch weder erklärt, welche Informationen extrahiert werden sollen, noch wie sie im zweiten Durchgang verwendet werden sollen. Also habe ich den folgenden Befehl verwendet:

    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
    

    das hat das Video konvertiert, aber mit einem unerwünschten Untertitel. Es ist überhaupt nicht klar, wie ich die Verwendung eines Untertitels vermeiden kann.


ffmpegist seit langem veraltet, soll man seinen eigenen nachfolger verwenden : avconv.
user2485710

So verwenden Sie avconvdann, um VOB-Dateien in avi zu konvertieren. Der Befehl avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avigab einen Fehler Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex

Es gibt ein Beispiel in der Manpage für avconv, für entschlüsselte VOB-Dateien avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviversuchen Sie dies
user2485710

Dies gibt einen FehlerError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex

Versuchen Sie es 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/nulldann 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- teilweise aus dem Arch doc @ dg99 verlinkt.

Antworten:


6

Um die Untertitel loszuwerden, können Sie den -nosubSchalter direkt nach dem Namen der .VOB-Datei hinzufügen .

Beispiel

$ 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

Einzelheiten

Diese Beschwörungsformeln sind oft sehr dicht, um diese ein wenig aufzubrechen

  • Eingabedatei: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • Ausgabedatei: -o video.avi
  • keine Untertitel: -nosub
  • Ton nicht codieren: -nosound
  • mit angegebenem Codec codieren: -ovc x264

Liste anderer 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
  • x264-Codierungsoptionen: x264encopts
  • Einstellmodus für direkte Bewegungsvektoren :direct=auto
  • Anzahl der Durchgänge :pass=2
  • Zielcodierungs-Bitrate: bitrate=900
  • Vor. Frames, die als Prädiktoren in B- und P-Frames verwendet werden (def: 3):frameref=5
  • gleichzeitige Anzahl von B-Frames: bframes=1
  • Vollpixel-Bewegungsschätzung alg.: me=umh

    HINWEIS : umh - ungleichmäßige Suche mit mehreren Sechsecken (langsam)

  • Aktivieren Sie alle Makroblock-Typen: partitions=all

  • optimale Quantisierung der Ratenverzerrung: trellis=1

    HINWEIS: 2 - aktiviert bei allen Modusentscheidungen (langsam, erfordert subq> = 6)

  • Quantisierer-Inkrement / Dekerement-Wert: qp_step=4

    HINWEIS: Maximalwert, um den der Quantisierer zwischen Frames inkrementiert / dekrementiert werden kann (Standard: 4)

  • Quantisiererkomprimierung (Standard: 0,6): qcomp=0.7

  • Bewegungsvorhersage für Makroblöcke in B-Frames: direct_pred=auto
  • maximales Intervall zwischen Keyframes in Frames: keyint=300

  • Optionen danach sind Videofilter: -vf

HINWEIS: Für die Videofilterschalter ist es wichtig, dass Sie harddupals letzten Filter verwenden: Dadurch wird MEncoder gezwungen, jeden Frame (auch doppelte) in die Ausgabe zu schreiben. Außerdem ist es notwendig , zu verwenden , scale=$WIDTH,-10mit $WIDTHals -1die ursprünglichen Breite zu behalten oder eine neue, in der Regel kleine, Breite: es ist notwendig , da die H.264 - Codecs quadratische Pixel und DVD verwenden stattdessen rechteckige Pixel verwendet werden .

  • scale=-1
  • -10
  • harddup

Vielen Dank für dieses gut erläuterte Beispiel, wie Sie das Video erhalten. Ihr vorgeschlagener Befehl scheint perfekt zum Extrahieren des Videos zu funktionieren. Allerdings habe ich jetzt kein Audio. Wenn ich Ihren Befehl ohne -noaudiound mit verwende, -oac copyerhalte ich das Audio, das nicht mit dem Video synchronisiert ist. Es wird entweder mit einer anderen Geschwindigkeit oder mit beiden verschoben. Irgendwelche Vorschläge, wie ich auch das Audio richtig machen kann? Und was ist mit mehreren VOB-Dateien? Wie packe ich den Inhalt in eine einzelne .aviDatei (oder ein anderes Format)?
Alex

@Alex - nur ein Gedanke, aber ich glaube nicht, dass Sie einfach einen -oac copymit 2 Durchgängen machen können , da Sie das Video neu codieren, müssen Sie das Audio zusammen mit ihm neu codieren. Um sie zu "packen", sollten die VOB-Dateien wie folgt zusammengeführt werden : cat *.vob all.vob. Dann all.vobim Mencoder cmd verwenden. Es gibt auch andere Möglichkeiten, dies zu tun.
slm

3

Wenn Sie verwenden möchten mplayer, sollten Sie es versuchen mencoder( http://www.mplayerhq.hu ). Eine der besten Eigenschaften ist, dass sich die Wiedergabeoptionen, die Sie kennen mplayer, beim Codieren ziemlich ähnlich verhalten. Außerdem gibt es viele Dokumentationen und E-Mail-Threads, die genau das abdecken, was Sie fragen:


Die bereitgestellten Links enthalten Dutzende verschiedener Beispiele und Hunderte von Optionen. Es ist keine klare und präzise Antwort auf meine Frage.
Alex

1
Stimmt, aber ich habe die Antwort nicht geschrieben, um einen guten Ruf zu erlangen. Ich habe sie geschrieben, um Ihnen zu helfen. Lesen Sie einige mencoderSeiten durch. Es gibt mehrere Piratengruppen, die nur mencoderfür ihre gesamte Arbeit verwenden. So einfach und leistungsstark und automatisierbar kann es sein.
dg99

2

Ich weiß, dass dies ein alter Beitrag ist, aber bei der Suche nach diesem Problem im Internet wird die obige Frage angezeigt, und einige andere Einträge sind noch älter.

Ich habe verschiedene Tools ausprobiert, bin aber am Ende mit diesem Befehl am zufriedensten:

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

Es ist eine leichte Modifikation von der, die ich hier gefunden habe .

Ich habe gerade den Audio-Codec ersetzt ( libflacwar auf meinem System nicht vorhanden, daher habe ich ihn durch libmp3lame( Quelle ) und den -crfWert zur Qualitätssteigerung ersetzt. Es können auch andere Formate verwendet werden, z mp4.

In meinem Test (mit einem eher mittelmäßigen Prozessor) wurde eine 2,6-GB-VOB-Datei (bereits aus drei anderen Dateien verkettet) in etwa 50 Minuten in ein 960-MB-AVI-Video von vergleichbarer Qualität konvertiert.

20 ist die mittlere akzeptable Qualität (in Handbremshilfeartikeln, die ich gesehen habe). Größere Zahlen reduzieren die Größe auf Kosten der Qualität. Über 20 Qualitätsverlust ist klar.

Es ist besser, diesen Befehl in einem Terminal zu verwenden, um den Fortschritt zu sehen, ihn leichter zu beenden usw.

Was mir an diesem Befehl gefällt, ist, dass er ein ausgewogenes Verhältnis zwischen Qualität, Zeit und Größe bietet und einfach über das Kontextmenü des Dateimanagers verwendet werden kann.

Wie das geht, hängt vom Dateimanager ab. Der Befehl kann Thunar und Nautilus einfach als 'benutzerdefinierte Aktion' hinzugefügt werden. Ich habe es Dolphin mit einer ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopDatei wie dieser hinzugefügt :

[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

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.