Jak przekonwertować plik VOB do AVI?


10

Próbuję przekonwertować plik VOB skopiowany z DVD na avi w Ubuntu 13.10. Próbowałem dvdrip, co nie powiodło się z powodu błędu liczby klatek lub coś takiego. Próbowałem też acidrip, ale zawsze wybrałem ścieżkę audio, której nie chciałem używać. Wolę mieć rozwiązanie wiersza polecenia, aby utworzyć avi z następującymi funkcjami:

  • do użytku z mplayerem (tj. przy użyciu funkcji krokowych)
  • z podtytułem zgodnie z wymaganiami (lub w ogóle nikim)
  • z prawidłową ścieżką audio
  • z synchronizacją wideo i audio

Próbowałem trochę ffmpegi avconvpoleceń i udało się stworzyć avi, ale obraz i dźwięk były całkowicie zsynchronizowane. Więc jakich opcji powinienem użyć, aby przekonwertować plik VOB na plik avi?

Byłbym wdzięczny za wyjaśnienia dotyczące sugerowanych opcji!

Dodatkowe informacje:

  1. ffmpegKomenda daje następujące dane wyjściowe do pliku wejściowego

    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. Następujące polecenie

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

    na przykład spowodowało awarię mojej sesji Ubuntu.

  3. Następujące polecenie

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

    na przykład spowodował następujący błąd:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. Następujące polecenie

    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
    

    na przykład spowodował następujący błąd:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. Następujące polecenie

    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
    

    na przykład wydawało się działać dla niektórych ramek. Ale bardzo szybko napotkałem wiele błędów formularza

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Następujące polecenie

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

    dokonałem konwersji, ale (i) korzystam z napisów, chociaż nie chciałem ich używać (ii) pomyliłem dźwięk (audio i wideo są strasznie źle umieszczone) i (iii) wydaje się być wolniejszy niż film, który faktycznie idzie (może zająć 2 godziny na 90-minutowy film).

  7. Próbowałem wydać polecenie tutaj (trzeci post od Xeratul), ale zatrzymało się to z błędem

    FATAL: Cannot initialize video driver.
    
  8. Wypróbowałem podaną poniżej sugestię, aby spojrzeć na stronę mencodera . Ta strona sugeruje użycie dwóch przejść:

    pierwszy czyta informacje o filmie, drugi wykorzystuje te informacje do kodowania.

    ale ani nie wyjaśniono, które informacje wyodrębnić ani jak ich użyć w drugim przebiegu. Więc użyłem następującego polecenia:

    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
    

    które przekonwertowało wideo, ale z niechcianymi napisami. W ogóle nie jest jasne, jak mogę uniknąć używania napisów.


ffmpegjest przestarzała, ponieważ dawno temu, mają używać własnego następcę: avconv.
user2485710,

Jak więc avconvnastępnie użyć do konwersji plików VOB do AVI. Polecenie avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avidało błąd Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex

na stronie podręcznika znajduje się przykład avconv, dla odszyfrowanych plików VOB avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avispróbuj tego
user2485710

Daje to błądError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex

Spróbuj 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/nullwtedy 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- przyjęła, że w części z doc Arch @ dg99 powiązane.

Odpowiedzi:


6

Aby pozbyć się napisów, uważam, że możesz dodać -nosubprzełącznik, zaraz po nazwie pliku .VOB.

Przykład

$ 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

Detale

Te zaklęcia są często bardzo gęste, więc trochę je rozbijamy

  • plik wejściowy: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • plik wyjściowy: -o video.avi
  • bez napisów: -nosub
  • nie koduj dźwięku: -nosound
  • kodować za pomocą danego kodeka: -ovc x264

lista innych kodeków

$ 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
  • Opcje kodowania x264: x264encopts
  • ustaw tryb dla wektorów ruchu bezpośredniego :direct=auto
  • liczba przebiegów :pass=2
  • docelowa przepływność kodowania: bitrate=900
  • przed. ramki używane jako predyktory w ramkach B i P (def: 3):frameref=5
  • współbieżna liczba ramek B: bframes=1
  • estymacja ruchu fullpixel alg .: me=umh

    UWAGA: hmm - nierównomierne wyszukiwanie wielu heksagonów (wolne)

  • włącz wszystkie typy makrobloków: partitions=all

  • optymalna kwantyzacja prędkości zniekształcenia: trellis=1

    UWAGA: 2 - włączone podczas wszystkich decyzji trybu (powolne, wymaga subq> = 6)

  • wartość przyrostu / zmniejszenia kwantyzatora: qp_step=4

    UWAGA: maksymalna wartość, o jaką kwantyzator może być zwiększany / zmniejszany między ramkami (domyślnie: 4)

  • kompresja kwantyzatora (domyślnie: 0,6): qcomp=0.7

  • przewidywanie ruchu makrobloków w ramkach B: direct_pred=auto
  • maksymalny odstęp między klatkami kluczowymi w ramkach: keyint=300

  • dostępne opcje to filtry wideo: -vf

UWAGA: W przypadku przełączników filtrów wideo ważne jest, aby użyć ich harddupjako ostatniego filtra: zmusi to MEncodera do zapisania każdej klatki (nawet duplikatów) na wyjściu. Ponadto, jest to niezbędne do korzystania scale=$WIDTH,-10z $WIDTHjak -1zachować oryginalną szerokość lub nowy, zwykle mniejszy, szerokość: jest to konieczne, ponieważ kodek H.264 wykorzystuje zamiast kwadratowych pikseli i DVD korzysta z prostokątnych pikseli.

  • scale=-1
  • -10
  • harddup

Dziękuję bardzo za ten dobrze wyjaśniony przykład, w jaki sposób zdobyć wideo. Sugerowane polecenie wydaje się działać idealnie do rozpakowywania wideo. Jednak nie mam teraz dźwięku. Jeśli użyję twojego polecenia bez -noaudioi z -oac copy, otrzymam dźwięk, który nie jest zsynchronizowany z wideo. Jest albo przemieszczany, z inną prędkością, albo z obydwoma. Wszelkie sugestie, w jaki sposób mogę uzyskać poprawny dźwięk? A co z wieloma plikami VOB? Jak spakować zawartość do jednego .avipliku (lub innego formatu)?
Alex

@Alex - tylko myśl, ale nie sądzę, że można po prostu zrobić -oac copyz 2- krokowym , ponieważ ponownie kodujesz wideo, musisz ponownie kodować dźwięk wraz z nim. Co do „pakowania” je, pliki VOB powinny zostać połączone lubiłem to: cat *.vob all.vob. Następnie użyj all.vobw mencoder cmd. Są też inne sposoby, aby to zrobić.
slm

3

Jeśli zamierzasz używać mplayer, powinieneś spróbować mencoder( http://www.mplayerhq.hu ). Jedną z jego najlepszych cech jest to, że opcje odtwarzania, które znasz, mplayerzachowują się prawie tak samo podczas kodowania. Ponadto istnieje wiele wątków dotyczących dokumentacji i wiadomości e-mail dotyczących dokładnie tego, o co pytasz:


Podane linki zawierają kilkanaście różnych przykładów i setki opcji. To nie jest jasna i precyzyjna odpowiedź na moje pytanie.
Alex

1
To prawda, ale nie napisałem odpowiedzi, aby uzyskać reputację, napisałem ją, aby ci pomóc. Zastanów się nad przeczytaniem niektórych mencoderstron. Istnieje kilka grup pirackich, które używają tylko mencoderdo całej swojej pracy; tak to może być proste, wydajne i automatyczne.
dg99

2

Wiem, że to stary post, ale podczas wyszukiwania tego problemu w Internecie pojawia się powyższe pytanie, a niektóre inne wpisy są jeszcze starsze.

Próbowałem różnych narzędzi, ale ostatecznie jestem najbardziej zadowolony z tego polecenia:

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

To niewielka modyfikacja tej, którą tu znalazłem .

Właśnie wymieniłem kodek audio ( libflacnie było go w moim systemie, więc zastąpiłem go libmp3lame( źródłem ) i -crfwartością zwiększającą jakość. Można również użyć innych formatów, takich jak mp4.

W moim teście (z dość przeciętnym procesorem) plik vob o pojemności 2,6 GB (już połączony z trzech innych plików) został przekonwertowany na wideo avi o wielkości 960 MB o porównywalnej jakości w około 50 minut.

20 to średnia akceptowalna jakość (w artykułach pomocy dotyczących hamulca ręcznego, które widziałem). Większe liczby zmniejszają rozmiar kosztem jakości. Powyżej 20 utrata jakości jest oczywista.

Lepiej jest użyć tego polecenia w terminalu, aby zobaczyć postęp, łatwiej go zabić itp.

To, co podoba mi się w tym poleceniu, to to, że zapewnia dobrą równowagę między jakością, czasem i rozmiarem, i że można go łatwo używać z menu kontekstowego menedżera plików.

Jak to zrobić, zależy od menedżera plików. Polecenie można łatwo dodać do Thunara i Nautilusa jako „akcję niestandardową”. Dodałem go do Dolphin z ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopplikiem takim jak ten:

[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

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.