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':

dvdrip-shot0.gif

2. Выбираем где находится копия диска (где лежит каталог VIDEO_TS, а не сами файлы!), отмечаем 'Encode DVD on the fly':

dvdrip-shot1.gif

3. Зачитываем оглавление диска и выбираем звуковую дорожку:

dvdrip-shot2.gif

4. Разрешение нашего rip'а, кликаем 'Open zoom calculator' и выбираем нужное. "Хорошие" разрешения выделены красным цветом. Хорошесть их в том, что размер кратен 8 и проблемы с разными проигрывателями минимальны. Можно кликнуть 'Grab frame' и посмотреть как примерно будет выглядеть соотношение оригинала и rip'а:

dvdrip-shot3.gif

5. Если субтитров нет, все ясно. В противном случае самое лучшее - выбрать внешние субтитры. Тут выбирать не из чего:

dvdrip-shot4.gif

6. Задаем параметры звука и желаемый размер rip'а. Кодек XviD по умолчанию и это разумный выбор. Жмем 'Transcode' и через некоторое время (несколько часов, зависит от скорости компьютера) rip будет готов:

dvdrip-shot5.gif

Все просто, но встречаются диски с несколькими 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


Назад в оглавление



[Home] [TTL] [Unix] [Sdictionary] [ROW Programmer] [Symbian] [Misc] [News] [Search] [Contacts] [Guestbook]


Copyright (c) 1999-2017 Alexey Semenoff