Jakość konwersji VOB w FFmpeg

16

Próbuję przekonwertować plik VOB do formatu MPEG w następujący sposób:

./ffmpeg.exe -i VTS_01_2.VOB -r 24  out1.mpeg

Jednak jakość jest bardzo słaba.

próbowałem ./ffmpeg.exe -i VTS_01_2.VOB -vcodec copy out1.mpeg

Ale rozmiar pliku jest zbyt duży (90% oryginału - 300 MB na 4-minutowe wideo), a Windows Movie Maker zawiesza się przy próbie zaimportowania.

Jak mogę uzyskać przyzwoitą jakość MPEG z mojego VOB?

slhck
źródło

Odpowiedzi:

28
ffmpeg -i input.vob -c:v copy -c:a copy output.mpg  

To polecenie nie zmniejsza rozmiaru ani nie zmienia jakości. To tylko demultipleksuje VOB i przepakowuje go jako MPEG. Powinieneś pozostać z dokładnie taką samą jakością. Rozmiar zmienia się minimalnie z powodu utraty narzutu kontenera VOB.

Jeśli chcesz zachować jakość i zmniejszyć rozmiar, musisz przekonwertować go za pomocą innego enkodera, takiego jak x264 lub XviD, na kontener MKV lub MP4, na przykład:

ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4

To da ci wideo H.264 i audio AAC. Ustaw -crf 23na jakość wideo, gdzie mniejsza oznacza lepszą jakość (rozsądne wartości pochodzą z 18–28). Jakość dźwięku można zmienić -b:a 192kza pomocą dla stałej szybkości transmisji, lub jeśli chcesz użyć innego kodera, takiego jak -c:a libfaac, możesz wybrać VBR z -q:a 100(100% domyślnej jakości).

Stanley Williams
źródło
Rozumiem, to dobra informacja, którą warto wiedzieć. Wciąż szukam rozsądnego sposobu na kompresję i utrzymanie jakości (4 minuty na przyzwoitej jakości powinny być możliwe na 10-20 MB na pewno ... może nawet 50 MB jest w porządku).
1
co jeśli są inne VOB, które są częścią filmu. Czy ffmpeg wie, aby je uwzględnić?
niedz.
1
możeszcat *.VOB > output.vob
dmgl
Dla systemu Windows, jeśli najpierw trzeba połączyć kilka obiektów VOB: copy /b "1.vob" + "2.vob" + "3.vob" "temp.vob". Zobacz także stackoverflow.com/a/29729610
Basj
4

Ostatnio robiłem kodowanie VOB po zgraniu kilku niezastąpionych płyt DVD. Używanie ffmpeg version 1.2.4poza Homebrew w OSX:

ffmpeg -probesize 2G -analyzeduration 2G \
    -i VTS_04.VOB \
    -map 0:0 -map 0:1 -map 0:2 -map 0:9 \
    -metadata:s:a:0 language=eng -metadata:s:a:0 title="English Stereo" \
    -metadata:s:a:1 language=jap -metadata:s:a:1 title="Japanese Stereo" \
    -metadata:s:s:0 language=eng -metadata:s:s:0 title="English"
    -c:v libx264 -filter:v yadif -crf 18 -level 3.1 -tune film \
    -c:a copy \
    -c:s copy \
    OutputMovie.mkv

Musiałem ustawić, -probesizea -analyzedurationponieważ plik VOB o pojemności 5,4 GB miał strumienie rozpoczynające się później w pliku, które nie zostałyby znalezione bez tych opcji.

Następnie -mapparametr pozwala mi wybrać, które strumienie mają być przekazywane na wyjście - strumień wideo, dwa pierwsze strumienie audio i 9 strumień, które są napisami. Użyj ffprobe(za pomocą -probesizei, -analyzedurationaby wyświetlić listę strumieni).

Dodaj trochę -metadatado strumieni audio i napisów na wyjściu.

Opcje kodowania wideo po -c:vprzeczytaniu o innym miejscu .

Na koniec skopiuj do pliku wyjściowego strumienie audio i napisów. Dane wyjściowe muszą być MKVw celu prawidłowego osadzenia napisów i wszystkich metadanych.

Na moim Macbooku Air 2011 kodowanie zajęło około 6 godzin i wypluł idealny plik MKV o pojemności 2,4 GB.

mafroza
źródło
-1

Składnia z poprzedniej odpowiedzi nie działa w moim systemie Mac OS. Ten wydawał się działać dobrze, z nieco innymi opcjami (w -sameqcelu dopasowania kwantyzatora wejściowego, -ssdla przesunięcia czasu rozpoczęcia i -tczasu trwania):

ffmpeg -i VTS_01_1.VOB -sameq -strict experimental -ss 1612 -t 28 test.mpg
Jeff
źródło
3
Odpowiedzi są sortowane według głosowania, a nie czasu. Powinieneś edytować swoją odpowiedź, aby wyjaśnić, którą poprzednią odpowiedź masz na myśli.
Izaak Rabinovitch
1
Musisz używać starej wersji, ponieważ -sameqopcja jest przestarzała. W starych wersjach używaj -vcodec/ -acodeczamiast -c:v/ -c:a.
mark4o