Ripowanie płyt DVD do AVI


Trudno mi było znaleźć program do ripowania płyt DVD do formatu AVI. Po wielu próbach postanowiłem skorzystać z programu mplayer zawierającego koder do formatu avi, o nazwie mencoder. Obsługa tego programu z linii poleceń jest męcząca i dlatego napisałem prosty skrypt powłoki, który dobrze spełnia swoją rolę. Zastosowałem w nim kodowanie w jednym przebiegu, lecz mimo to jakość pliku końcowego jest dobra. Domyślne ustawienia to wysoka jakość kodowania, dźwięk w formacie mp3 i bitrate 96, skalowanie 720:405, filtr ramki obrazu oraz nagrywanie foni lub tekstu po polsku. Skrypt można pobrać stąd, a jego zawartość (dla ripowania pojedyńczego) jest zamieszczona poniżej. W paczce jest sześć skryptów, z czego dwa są do ripowania podwójnego. Ze względu na czytelność strony długie linie skryptu są złamane, co zaznaczyłem napisem łam w nawiasach.

#!/bin/sh
set -x

a=/home/andrzej

DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --cr-wrap \
	--title "DVDriper do formatu AVI" --clear \
        --inputbox \
"Podaj numer utworu:" 0 0 2> /tmp/numer

retval=$?

case $retval in
  0)
    mencoder dvd://`cat /tmp/numer` -sws 2 -o $a/film.avi -oac mp3lame -lameopts cbr:br=96 -ovc lavc (łam)
	-lavcopts vcodec=mpeg4:vhq:vbitrate=750 -vop scale=720:405,crop=708:568:8:8 -alang pl,en -slang pl;;
  1)
    exit;;
  255)
    exit;;
esac

rm -f /tmp/file*
rm -f /tmp/numer



Poniżej podam kilka zrzutów z pracy skryptu.





Skrypt został opracowany pod kątem maksymalnej prostoty eksploatacji. Aby dopasować skrypt do swoich wymagań należy zmienić zmienną a. Można także zwiększyć wartość bitrate dźwięku przy filmach muzycznych do wartości 128. Możemy też manipulować wartości bitrate obrazu, która jest ustalana doświadczalnie, po nagraniu kilku minut filmu. Widać na zrzucie, że przy wartości 750 wielkość filmu będzie wynosiła 749 MB. Film taki musimy wypalić na płycie 800 MB. Jeżeli zależy nam na dobrej jakości filmu to musimy wypalić go na dwóch płytach, co daje bitrate (u mnie) około 1200. Można także ustalić ją na 659 i filmy będzie można nagrywać na płycie 700 MB, ale z gorszą jakością. Ja mam ustawione na płytę 800 MB. Wymiary obrazu są ustalone na 720:405 z filtrem obwódek. Opcja -alang pl,en szuka i nagrywa fonię polską, a gdy jej nie ma to fonię angielską. Następna opcja -slang pl szuka tekstu polskiego, w przypadku braku polskiej foni i wczytuje ją do pliku AVI. Zostało poczynione założenie, że polska fonia nie będzie występowała wraz z polskim tekstem. Dlatego też, gdy film jest po polsku to brak tekstu jest ignorowany. Jeżeli fonia jest po angielsku, to polski tekst zostanie samoczynnie wyszukany i nagrany. Jak do tej pory ripowanie płyt DVD do formatu AVI jest czynnością prostą, lecz czasochłonną. Zdarzaja sie czasami płyty, które po otwarciu wywołują efekt "zawieszenia się" skryptu, lecz po określonym czasie (nawet do pół godziny) zaczynają się ripować. Plik film.avi zwieksza swoją objetość, a wszystkie cyfry wyświetlane przez skrypt stoją na zerze. Mimo tego film się ripuje i daje normalnie odtwarzać. Na koniec kilka słów o zainstalowanych pakietach. Ja mam wgrane: mplayer, xine, libdvdcss, lame, oraz mpeg2dec. Czasami właściwy film ma inny numer niż 1. Uruchamiam wtedy Mplayer-a (klikając prawym klawiszem myszki na okno obrazu), wybieram DVD-Zamontuj dysk i sprawdzam numer filmu. Aby wykluczyć przypadek wystepowania na raz polskiej foni i tekstu należy stworzyć dwa skrypty. W pierwszym ostatnia opcja to -alang pl, a w drugim -slang pl. Razem ze skryptami dołączyłem dwa inne skrypty do sprawdzania kodeków audio i video. Zdarzył mi się również przypadek, że na płycie język polski był zakodowany jako fiński. Należy wtedy zmienić w skrypcie litery pl na fi.


Dla osób, którym zależy na jeszcze lepszej jakości obrazu jest opracowana metoda konwersji dwu oraz trój stopniowej. Ja sprawdziłem metodę dwustopniową i ją opiszę. W pierwszej fazie odczytu jest zapisywany dźwięk i obraz oraz jest tworzony plik divx2pass.log, w którym są zapisywane nagłe zmiany akcji obrazu i koloru. W drugiej fazie korzystając z danych z powyższego pliku kodek video (w czasie akcji) zmienia wartość bitrate na większą, przez co poprawia sie jakość obrazu. Z własnych obserwacji stwierdziłem, że zmiana bitrate dźwięku na br=64 nie pogarsza fonii filmu, a znacząco zmniejsza jego objętość. Dzięki temu filmy mieszczą się na płycie 800 MB. Wada podwójnego ripowania jest dwukrotne odtwarzanie płyty z filmem, przez co ripowanie trwa dwa razy dłużej niż przy ripowaniu jednostopniowym. Jednakże jakość płyty to wynagradza.

Dla wygody opracowałem graficzne gui z programem Xdialog, które pozwala obsługiwać polecenia mencodera w prosty sposób, co pokazują zrzuty ekranu:


Program pozwala wybrać poszczególne pliki do ripowania, co w niektórych przypadkach można uznać za zaletę. Zastosowano w nim kodowanie dwustopniowe, a paczkę ze skryptem można pobrać z tego miejsca. Jedyne co należy zmienić to katalogi domowe użytkowników. Jakość uzyskanych filmów jest dobra i dla większości zastosowań wystarczająca. A oto kod skryptu, którego niektóre linie zostały "złamane", a powinien być w jednej linii:

do góry