Linux -- это интересно

Конвертирование .avi в DVD используя консольные утилиты


Итак, допустим, у нас есть некий avi-файл (xvid) и два файла с субтитрами (например, filmRUS.srt, filmENG.srt), которые мы хотим конвертировать в DVD-формат. В этой заметке мы будем использовать только инструменты командной строки. Дело в том, что большинство графических приложений в Linux для этих задач используют консольные утилиты, как то: FFmpeg, MEncoder и dvdauthor.

Давайте, попробуем:

1. Преобразование нашего .avi-файла используя FFmpeg или MEncoder в подходящий формат - .mpg

Предпочтительней будет использовать FFmpeg, так как для тех же операций он требует гораздо меньше параметров командной строки. В качестве примера приведу конвертирование AVI-файла в формат PAL DVD:

ffmpeg -i film.avi -aspect 4:3 -target pal-dvd dvd.mpg

Если же мы захотим повторить ту же операцию с помощью MEncoder, нам придётся добавить ряд параметров коммандной строки. Чтобы сделать свою жизнь проще, нужно пользоваться скриптами :) Вот пример:

#! /bin/bash
# bash script for creating a pal dvd
# movie is sneakers!
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
-vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \
-o sneakers.mpg sneakers.avi

Примечание: формат DVD сильно ограничен, то есть битрейт и соотношение экрана предварительно определены. Взгляните на эту таблицу:

ФорматРазрешениеВ. кодекВ. битрейтЧастота дискретизацииA. кодекA. битрейтFPSСоотношение сторон
NTSC DVD 720x480, 704x480, 352x480, 352x240 MPEG-2 9800 kbps 48000 Hz AC-3,PCM 1536 kbps (max) 30000/1001, 24000/1001 4:3, 16:9 (только для 720x480)
NTSC DVD 352x240[a] MPEG-1 1856 kbps 48000 Hz AC-3,PCM 1536 kbps (max) 30000/1001, 24000/1001 4:3, 16:9
NTSC SVCD 480x480 MPEG-2 2600 kbps 44100 Hz MP2 384 kbps (max) 30000/1001 4:3
NTSC VCD 352x240 MPEG-1 1150 kbps 44100 Hz MP2 224 kbps 24000/1001, 30000/1001 4:3
PAL DVD 720x576, 704x576, 352x576, 352x288 MPEG-2 9800 kbps 48000 Hz MP2,AC-3,PCM 1536 kbps (max) 25 4:3, 16:9 (только для 720x576)
PAL DVD 352x288[a] MPEG-1 1856 kbps 48000 Hz MP2,AC-3,PCM 1536 kbps (max) 25 4:3, 16:9
PAL SVCD 480x576 MPEG-2 2600 kbps 44100 Hz MP2 384 kbps (max) 25 4:3
PAL VCD 352x288 MPEG-1 1152 kbps 44100 Hz MP2 224 kbps 25 4:3

[a]

Эти разрешения редко используются для DVD, поскольку имеют довольно низкое качество.

2. Добавим субтитры с помощью spumux

Создадим два XML-файла с содержимым ниже, и сохраним их в качестве "filmRUS.xml" и "filmENG.xml" (то есть, для каждого языка).

<subpictures>
    <stream>
       <textsub filename="filmRUS.srt" characterset="cp1251"
                    fontsize="28.0" font="devedesans.ttf" horizontal-alignment="left"
                    vertical-alignment="bottom" left-margin="60" right-margin="60"
                    top-margin="20" bottom-margin="30" subtitle-fps="25"
                    movie-fps="25" movie-width="720" movie-height="574"
                    force="yes"
        />
     </stream>
</subpictures>

Кодировку указываем исходя из того, в какой кодировке исходные файлы с субтитрами.

XML-файлы содержат информацию, необходимую для spumux. Имена опций говорят сами за себя. Шрифт можно использовать любой понравившийся, присутствующий в системе.

Теперь создаём MPG-файл с субтитрами:

spumux -s0 filmRUS.xml filmRUS.mpg
rm film.mpg
spumux -s1 filmENG.xml filmRUSENG.mpg
rm filmRUS.mpg

3. Создаём файловую систему DVD при помощи dvdauthor в два этапа:

Создаём простой текстовый файл со следующим содержимым и сохраняем его как auth.xml

<dvdauthor>
    <vmgm />
    <titleset>
        <titles>
            <subpicture lang="ru"/>
            <subpicture lang="en" />
            <pgc>
                <vob file="filmRUSENG.mpg" />
            </pgc>
        </titles>
    </titleset>
</dvdauthor>

и вводим следующую команду в терминале:

dvdauthor -o mydvd -x auth.xml

В результате чего получим файловую систему DVD в директории mydvd.

4. Осталось записать всё это добро на диск!

growisofs -Z /dev/dvd -dvd-video mydvd/

Опция -Z сотрёт диск, если он не будет пустым.

Вот и всё :) Ничего сложного :)

Оставьте комментарий!
Используйте нормальные имена.Войти через loginza
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



 
(обязательно)