Linux. Кое что про DVD ripping.
Intro
Собственно простой случай, есть мультфильмы на DVD и хочется сделать RIP для того, чтобы
уместить несколько дисков на одном DVD-R и при необходимости (дети зацарапали etc) сделать еще одну копию.
Для поборников copyright особо подчеркну, что DVD честно купленные, RIP делается исключительно
для себя bla-bla-bla...
Что понадобится?
Набор софта выглядит таким образом:
- Для копирования VOB файлов можно использовать
vobcopy, для которой понадобятся
libdvdcss и
libdvdread
- MPlayer, проигрыватель видео-файлов
- Transcode, набор утилит для работы с видео,
использует ffmpeg, для работы с MP3 звуком ему необходима библиотека lame
- Xvid кодек
- Dvd::rip, Perl'овый GUI для transcode, использует
Perl::Gtk2.
Установка всех компонентов стандартная.
Перед сборкой transcode ставим ffmpeg
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
# cd ffmpeg
# configure && make && make install
При сборке transcode после запуска configure нужно убедиться, что
libdvdread и lame найдены и включены в сборку.
# ./configure
...
----------------------------------------
Summary for transcode 1.0.5:
----------------------------------------
libavcodec
----------------------------------------
headers -I/usr/include
libraries -L/usr/lib -lavcodec -L/usr/local/lib -lavcodec -lz -lm -ldl -lavutil
build 3354624
version 51.48.0
statically linked no
optional package support
----------------------------------------
libmpeg2 yes
lame yes
libdvdread yes
Когда все настроено, можно приступать.
Копирование VOB'ов на HDD
Собственно начинать нужно именно с этого шага. Несмотря на то, что есть возможность работать напрямую с
DVD, намного удобнее сделать копию диска заранее. Проще всего это сделать с помощью vobcopy:
$ mkdir -p /tmp/kaet_villi/VIDEO_TS
$ vobcopy -m -i /mnt/dvd -o /tmp/kaet_villi/VIDEO_TS
После завершения работы vobcopy копия всего диска будет в /tmp/kaet_villi/VIDEO_TS
Разборка с содержимым диска
Собственно диск может состоять из одного или более title. Если он один, то проще всего
использовать dvd::rip, если же на диске есть нескольно title, то легче всего их вытащить в MPEG
файлы и перекодировать по отдельности.
Смотрим что там у нас:
$ cd /tmp/kaet_villi/VIDEO_TS
$ tcprobe -i `pwd`
[tcprobe] DVD image/device
(dvd_reader.c) mpeg2 ntsc 4:3 U0 720x480 video
(dvd_reader.c) ac3 ru drc 48kHz 2Ch
(dvd_reader.c) ac3 en drc 48kHz 2Ch
(dvd_reader.c) DVD title 1/1: 13 chapter(s), 1 angle(s), title set 1
(dvd_reader.c) title playback time: 01:36:32.00 5793 sec
(dvd_reader.c) [Chapter 01] 00:00:00.000 , block from 0 to 193509
(dvd_reader.c) [Chapter 02] 00:08:09.467 , block from 193510 to 364214
(dvd_reader.c) [Chapter 03] 00:15:18.467 , block from 364215 to 534841
(dvd_reader.c) [Chapter 04] 00:22:27.800 , block from 534842 to 716961
(dvd_reader.c) [Chapter 05] 00:30:05.800 , block from 716962 to 891992
(dvd_reader.c) [Chapter 06] 00:37:25.500 , block from 891993 to 1078644
(dvd_reader.c) [Chapter 07] 00:45:15.500 , block from 1078645 to 1242208
(dvd_reader.c) [Chapter 08] 00:52:06.500 , block from 1242209 to 1426944
(dvd_reader.c) [Chapter 09] 00:59:52.000 , block from 1426945 to 1602258
(dvd_reader.c) [Chapter 10] 01:07:13.300 , block from 1602259 to 1777490
(dvd_reader.c) [Chapter 11] 01:14:33.867 , block from 1777491 to 1945807
(dvd_reader.c) [Chapter 12] 01:21:37.500 , block from 1945808 to 2123494
(dvd_reader.c) [Chapter 13] 01:29:04.533 , block from 2123495 to 2302853
[tcprobe] summary for /tmp/kaet_villi/VIDEO_TS, (*) = not default, 0 = not detected
import frame size: -g 720x480 [720x576] (*)
aspect ratio: 4:3 (*)
frame rate: -f 23.976 [25.000] frc=1 (*)
audio track: -a 0 [0] -e 48000,16,2 [48000,16,2] -n 0x2000 [0x2000]
audio track: -a 1 [0] -e 48000,16,2 [48000,16,2] -n 0x2000 [0x2000]
[tcprobe] V: 138894 frames, 5793 sec @ 23.976 fps
[tcprobe] A: 90.52 MB @ 128 kbps
[tcprobe] CD: 650 MB | V: 559.5 MB @ 810.2 kbps
[tcprobe] CD: 700 MB | V: 609.5 MB @ 882.6 kbps
[tcprobe] CD: 1300 MB | V: 1209.5 MB @ 1751.4 kbps
[tcprobe] CD: 1400 MB | V: 1309.5 MB @ 1896.2 kbps
В этом случае есть только один title, смело запускаем dvd::rip:
DVD::RIP
$ dvdrip
1. Выбираем File->New Project. Набираем имя и жимкаем 'Create Project':
2. Выбираем где находится копия диска (где лежит каталог VIDEO_TS, а не сами файлы!),
отмечаем 'Encode DVD on the fly':
3. Зачитываем оглавление диска и выбираем звуковую дорожку:
4. Разрешение нашего rip'а, кликаем 'Open zoom calculator' и выбираем
нужное. "Хорошие" разрешения выделены красным цветом. Хорошесть их в том, что размер кратен 8 и
проблемы с разными проигрывателями минимальны. Можно кликнуть 'Grab frame' и посмотреть как примерно
будет выглядеть соотношение оригинала и rip'а:
5. Если субтитров нет, все ясно. В противном случае самое лучшее - выбрать внешние субтитры. Тут
выбирать не из чего:
6. Задаем параметры звука и желаемый размер rip'а. Кодек XviD по умолчанию и это разумный выбор. Жмем
'Transcode' и через некоторое время (несколько часов, зависит от скорости компьютера) rip будет готов:
Все просто, но встречаются диски с несколькими title.
$ tcprobe -i `pwd`
[tcprobe] DVD image/device
(dvd_reader.c) mpeg2 ntsc 4:3 U0 704x480 video
(dvd_reader.c) ac3 ru drc 48kHz 2Ch
(dvd_reader.c) ac3 en drc 48kHz 2Ch
(dvd_reader.c) ac3 en drc 48kHz 1Ch
(dvd_reader.c) DVD title 1/16: 5 chapter(s), 1 angle(s), title set 1
(dvd_reader.c) title playback time: 00:07:46.29 467 sec
(dvd_reader.c) [Chapter 01] 00:00:00.000 , block from 0 to 459
(dvd_reader.c) [Chapter 02] 00:00:02.934 , block from 460 to 45241
(dvd_reader.c) [Chapter 03] 00:02:27.301 , block from 45242 to 87650
(dvd_reader.c) [Chapter 04] 00:04:15.634 , block from 87651 to 123859
(dvd_reader.c) [Chapter 05] 00:05:56.800 , block from 123860 to 163287
В примере выше на диске находятся 16 title'ов.
В таких случаях dvd::rip не очень удобен и поэтому лучше перекодировать вручную.
Работа с MPEG файлами
Забираем вот такой
скрипт. Далее разбиваем title на отдельные MPG файлы:
$ cd where_is_VIDEO_TS
$ mkdir mpeg
$ split_dvd_titles.plx . mpeg
В каталоге mpeg/ будет создан набор файлов соответствующий количеству непустых title.
Дальнейшую обработку проводим
таким скриптом.
Правим параметры редактирования:
# Video
my $v_br = '900' ; Bitrate видео
my $resize = '512x384'; Разрешение видео
# Audio
my $s_br = '128'; Bitrate звука
my $sr = '44100'; Частота дискретизации
my $ch = '2'; Количество каналов, 2 - стерео, 1 - моно
Перекодируем:
$ cd where_is_VIDEO_TS/mpeg
$ for n in *.mpg ; do mpg2avi.plx $n ; done
Опять же ждем некое время и получаем набор AVI файлов.
Собственно все вышеописанное скорее сжатый конспект, чем подробное руководство,
неточности и замечания принимаются по email.
Tags: dvd ripping mplayer audio mp3 transcode dvdrip
Назад в оглавление
|