Задача: сделать из нескольких видеофайлов DVD-Video диск, который можно смотреть не только на компьютере, но и на DVD-плейере
Входные данные: несколько файликов с фильмами/роликами в различных форматах(mpeg,avi..)
Выходные данные: DVD-видео в формате файликов, распиханых по специальным каталогам, либо в виде iso
Необходимые пакеты: mplayer, mencoder, dvdauthor
В связи с тем, что в DVD-video используется именно этот формат кодирования видео потока, то необходимо все имеющиеся файлики пережать в mpeg2. Для этого нам понадобиться mencoder. Перед тем как привести строку с параметрами имеет смысл понять, что за зверь этот MPEG-2 1) .
MPEG-2 — название группы стандартов цифрового кодирования видео и аудио сигналов. Стандарт MPEG-2 в основном используется для кодирования видео и аудио при вещании, включая спутниковое вещание и кабельное телевидение. MPEG-2 с некоторыми модификациями также активно используется как стандарт для сжатия DVD.
Стандарт MPEG-2 налагает определенные ограничения на видео поток
Обычная команда для перекодирования в MPEG-2 представляет из себя следующее:
$ mencoder -oac <audio-codec> -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=<X>:<Y>, \ harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=<buffer>:vrc_maxrate=9800: \ vbitrate=5000:keyint=15:aspect=<aspect> -ofps 25 -o outfile.mpg infile.avi
расшифровка, используемых ключиков2):
-o <имя_файла> Выводить результат в указанный файл. -oac <название кодека> Указывает кодировать заданным аудио кодеком (нет значения по умолчанию). Полный список доступных кодеков можно получить при помощи опции <ключик> help. (в данном случае -oac help) -ovc <название кодека> Указывает кодировать заданным видео кодеком (нет значения по умолчанию). -of <format> Кодировать в указанный формат (по умолчанию: AVI). -mpegopts - параметры кодирования в MPEG format=<mpeg1 | mpeg2 | xvcd | xsvcd | dvd | pes1 | pes2> формат потока (по умолчанию: mpeg2). Видео фильтры позволяют изменять видео поток и его свойства. Синтаксис такой: -vf <фильтр1[=параметр1:параметр2:...],фильтр2,...> Устанавливает цепочку видео фильтров. scale[=w:h[:ilaced[:chr_drop[:par[:par2[:presize[:noup[:arnd]]]]]]]] Масштабирует изображение модулем программного масштабирования (медленно) и осуществляет YUV<->RGB преобразование пространства цветов. <w>,<h> ширина/высота после масштабирования (по умолчанию: оригинальная ширина/высота) <ilaced> Переключает чересстрочное масштабирование. 0: выключено (по умолчанию) 1: включено <chr_drop> пропуск цветности 0: Использовать все доступные линии для цветности. 1: Использовать каждую 2 входную линию для цветности. 2: Использовать каждую 4 входную линию для цветности. 3: Использовать каждую 8 входную линию для цветности. <par>[:<par2>] Устанавливает некоторые параметры масштабирования в зависимости от модуля масштабирования, выбранного с помощью -sws. -sws 2 (бикубический): B (размытость) and C (ореол на границе цветов) 0.00:0.60 по умолчанию 0.00:0.75 "точный бикубический" VirtualDub’а 0.00:0.50 сплайн Catmull-Rom 0.33:0.33 сплайн Mitchell-Netravali 1.00:0.00 кубический B-сплайн -sws 7 (гауссово): резкость (0 (мягко) - 100 (резко)) -sws 9 (lanczos): длина фильтра (1-10) harddup дублирующиеся кадры будут принудительно кодироваться на выходе -lavcopts параметры libAvCodec. vcodec=<значение> Задействует указанный кодек (по умолчанию: mpeg4). vrc_buf_size=<значение> размер буфера в кбит. Для MPEG-1/2 это также устанавливает размер vbv буфера, для VCD рекомендуется использовать 327, 917 для SVCD и 1835 для DVD. vrc_maxrate=<значение> максимальный битпоток в кбит/сек (по умолчанию: 0, неограничен) vbitrate=<значение> Указывает битпоток (по умолчанию: 800). (1кбит = 1000 бит) 4-16000 (в кбитах) 16001-24000000 (в битах) keyint=<value> Устанавливает максимальный интервал между IDR-кадрами (по умолчанию: 250). Большие значения экономят биты, таким образом, увеличивая качество ценой точности перемещения. В отличие от MPEG-1/2/4, H.264 не страдает от погрешности DCT при больших значениях keyint. aspect=<x/y> Сохраняет пропорции фильма внутри него, в точности как в MPEG файлах. Намного приятнее при масштабировании, поскольку качество не ухудшается. Параметр опции aspect может быть задан дробью или вещественным числом. -ofps - частота кадров для выходного потока
Перед тем как начать конвертировать файлик хорошо бы узнать какими кодеками он зажат. Для этого можно сделать следющее:
[zps@note-fox-cub Documents]$ mplayer -vo dummy -identify kolobki.avi 2> /dev/null MPlayer SVN-r23784 rpm.livna.org (C) 2000-2007 MPlayer Team CPU: Intel(R) Pentium(R) M processor 1.73GHz (Family: 6, Model: 13, Stepping: 8) CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled with runtime CPU detection. Playing kolobki.avi. AVI file format detected. ID_VIDEO_ID=0 [aviheader] Video stream found, -vid 0 ID_AUDIO_ID=1 [aviheader] Audio stream found, -aid 1 VIDEO: [DX50] 512x384 24bpp 25.000 fps 1767.5 kbps (215.8 kbyte/s) ID_FILENAME=kolobki.avi ID_DEMUXER=avi ID_VIDEO_FORMAT=DX50 ID_VIDEO_BITRATE=1767472 ID_VIDEO_WIDTH=512 ID_VIDEO_HEIGHT=384 ID_VIDEO_FPS=25.000 ID_VIDEO_ASPECT=0.0000 ID_AUDIO_FORMAT=85 ID_AUDIO_BITRATE=127704 ID_AUDIO_RATE=0 ID_AUDIO_NCH=0 ID_LENGTH=1235.76 ========================================================================== Opening audio decoder: [mp3lib] MPEG layer-2, layer-3 AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400) ID_AUDIO_BITRATE=128000 ID_AUDIO_RATE=44100 ID_AUDIO_NCH=2 Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3) ==========================================================================
Данный файлик имеет звуковую дорожку, запакованную в mp3, в то время, как нам для совместимости с DVD-Video хорошо бы иметь AC3. Поэтому конвертируем этот файлик следующим образом:
$ mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,harddup -srate 48000 \ -af lavcresample=48000 -lavcopts \ vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:\ abitrate=192:aspect=16/9 -ofps 25 -o kolobki.mpg kolobki.avi
Далее можно откинуться на спинку кресла, и подождать пока все перекодируется, потому что этот процесс занимает кучу времени.После того, как закончится перекодирование, появиться новый файлик в формате MPEG-2, но уже в формате 16:9 и немного большим разрешением :)
чтобы его просмотреть, можно выполнить:
$ mplayer -vo x11 kolobki.mpg
$ mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,harddup \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9 \ -ofps 25 -o kolobki.mpg kolobki.avi
$ mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd \ -vf scale=352:288,harddup -srate 44100 -af lavcresample=44100 \ -lavcopts vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 \ -ofps 25 -o kolobki.mpg kolobki.avi
$ mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd \ -vf scale=480:576,harddup -srate 44100 -af lavcresample=44100 \ -lavcopts vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917: \ vrc_minrate=600:vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 \ -ofps 25 -o kolobki.mpg kolobki.avi
Перед тем, как записать DVD, необходимо создать структуру DVD-Video.
В этом деле нам поможет DVDAuthor.
DVDAuthor имеет всего два параметра:
-o – директория в которой создать структуру диска
-x – входной xml-файл с описанием DVD-Video диска (:
Документация DVDAuthor
Простейщий файл выглядит следующим образом:
<dvdauthor> <vmgm> <menus> <video format="pal" aspect="16:9" resolution="720x576" widescreen="nopanscan" /> <audio /> <pgc entry="title" pause="inf"> <button name="1">jump title 1;</button> </pgc> </menus> </vmgm> <titleset> <titles> <pgc> <vob file="kolobki.mpg" chapters="0,1:01,5:01" /> <post>call vmgm menu 1;</post> </pgc> </titles> </titleset> </dvdauthor>
более детально пока не разобрался. вся информация касательно создания инфраструктуры dvd-video лежит в man dvdauthor