Naprawa plików VOB za pomocą ffmpeg

Witam

 

Jestem początkujący jeśli chodzi o obsługę programu ffmpeg, a również specyfikę formatów audio i video, kodeków itp.

 

Mam pliki BUP, IFO i VOB, które wzięły się z płyt DVD-Video, a te z kolei są wynikiem przegrywania kaset VHS za pomocą przegrywarki SHARP VRC/DVD Recorder Combination DV-RW360S(B). Gdy otwieram (za pomocą VLC media player) plik VIDEO_TS.IFO, wszystko odtwarza się prawidłowo, wartość całkowitego czasu trwania też jest OK. Gdy natomiast otwieram VTS_01_1.VOB (albo z inną cyfrą na końcu), odtwarza się odpowiedni fragment filmu od początku do końca, ale wyświetlająca się wartość całkowitego czasu jest niezgodna z prawdą. To pewnie jest powodem problemu z importem tych plików do programu montażowego (u mnie Adobe Premiere Elements 4), który najczęściej wczytuje tylko fragmenty zawartości tych plików VOB.

 

Właściwości (poza długością) wideo i audio tych plików są dla każdego takie same i wydają się być OK. Trochę szukałem i kombinowałem, aż w końcu trafiłem na program ffmpeg i polecenie, które prawie rozwiązuje mój problem. Gdy wpiszę komendę (przykładowe ścieżki do plików):

ffmpeg -i "D:\VHS1\VTS_01_1.VOB" -target pal-dvd "D:\VHS1-P\VTS_01_1.vob"

trochę czekam, po czym wyświetla mi się np. takie podsumowanie:

frame=45147 fps=248 q=11.6 Lsize= 1448416kB time=00:30:05.80 bitrate=6570.7kbits/s dup=2 drop=0 speed=9.93x

video:1322842kB audio:98738kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.887726%

i dostaję plik, który wyświetla już prawidłową długość i importuje się do programu montażowego w całości. Problem tylko w tym, że niektóre z pozostałych właściwości pliku wynikowego są inne niż źródłowego i wynik zajmuje więcej miejsca na dysku. Poniżej strzałki pokazują, które właściwości ulegają zmianie (brak strzałki oznacza, że wartość pozostaje niezmieniona):

 

Obraz-kodek: MPEG-1/2 Video (mpgv)
wymiary: 720x576
szybkość danych: 6116 kb/s –> 9000 kb/s
całkowita szybkość transmisji bitów: 6372 kb/s –> 9448 kb/s
liczba klatek na sekundę: 25
zdekodowany format: Planar 4:2:0 YUV
Dźwięk-kodek: A52 Audio (aka AC3) (a52)
bitrate: 256 kb/s –> 448 kb/s
kanały: stereo
częstotliwość próbkowania: 48 kHz
rozmiar (na przykładzie jednego z plików): 0,99 GB --> 1,38 GB

 

Wersja programu: ffmpeg-20161107-34aeb5d-win64-static.

 

Pytanie: jak zmodyfikować podaną przeze mnie komendę, żeby wynikowy plik miał naprawioną długość, ale żeby nie zyskiwał na rozmiarze i nie tracił na jakości (choć już teraz zdaje się, że jakość się nie pogarsza)? Prawdopodobnie trzeba mu kazać nie zmieniać tych właściwości video i audio, które on zmienia tak jak pokazałem powyżej - tylko jak?

Zmień rozszerzenie pliku .vob na .mpeg

Twój problem wynika z tego, że rzeczywiście niewiele wiesz, jeśli chodzi o “specyfikę formatów audio i video, kodeków itp” (sam nie jestem wielkim znawcą)  i próbujesz naprawić, coś co nie jest zepsute i jeszcze w dodatku ffmpeg-iem w w wierszu poleceń. Poczytaj najpierw o strukturze standardu DVD. Na początek np: http://www.cdrinfo.pl/artykuly/dvd_strukt/    + google. VOB-y w folderze VIDEO_TS zazwyczaj nie są podzielone równo np. na rozdziały. Możesz mieć więc ich więcej/mniej. Całe info potrzebne do odtworzenia jest w IFO (a więc i o podziale), a całe wideo (kodek mpeg2) jest VOB-ach. A Adobe Premiere Elements 4 nie wczyta IFO? Czy jest tam cały jeden film bez podziału na rozdziały?

 Jeżeli masz nadal fizycznie ten dysk DVD (lub jeśli zapakujesz VIDEO_TS w obraz ISO i załadujesz go na dysku wirtualnym), to możesz użyć DVD Decryptera w trybie IFO. Wtedy po wczytaniu DVD zobaczysz podział na rozdziały i program Ci podzieli VOB-y równo, zgodnie z informacją z IFO. Albo użyj MakeMKV, który przepakuje Ci wideo z VOB-ów do MKV bez konwersji, czyli bez straty jakości (w środku będzie nadal mpeg2). W MakeMKV też możesz wybrać tylko poszczególne rozdziały.

PS. MakeMKV dodatkowo zdejmuje wiele zabezpieczeń z DVD. Jest darmowy dopóki jest w wersji beta. Jeśli przestaje działać, instalujesz nową wersję lub szukasz klucza na jego forum.