OpenSource в заметках

Путь к пониманию

Запись DVD-Video в Linux

2008-01-09 от ashep

Зачем это нужно?

Обратилась ко мне как-то знакомая с просьбой записать пару фильмов на DVD-Video диск. Все дело в том, что компьютера у нее дома нет, есть только аппаратный проигрыватель, а фильм посмотреть очень хочется. Я, будучи уверенным, что все это делается элементарно и просто, согласился. Изначально настроился на использование утилит, работающих исключительно из командной строки, чтобы как можно больше избавить себя от нажимания на клавиши при подготовке к записи. Хотелось просто запустить скрипт из командной строки и идти спать, в то время, как машина будет кодировать и записывать то, что ей сказано.


План действий

  • Транскодирование
  • Подготовка файловой структуры (авторинг)
  • Создание образа
  • Запись
  • Автоматизация

Что использовал?

Были какие-то попытки транскодировать видео и аудио по отдельным потокам при помощи ffmpeg, с целью их дальнейшего мультиплексирования mplex'ом из пакета MJPEG Tools, однако из-за скудности моих знаний в области цифрового видео, мне не удалось заставить ffmpeg создать видео поток, который бы mplex смог обработать. Повозившись около часа и поискав ответ на вопрос, каким же все-таки должен быть этот видео поток для того, чтобы mplex не ругался, и не найдя его, я случайно наткнулся на проект VideoTrans, который с успехом и использовал для транскодирования. Для решения задачи построения файловой структуры будущего DVD-Video диска я использовал старую добрую DVDAuthor. Для подготовки ISO-образа и записи полученной структуры на DVD носитель использовались программы genisoimage и wodim из пакета cdrkit.

Транскодирование

Для преобразования видео файлов в удобоваримый для DVD-Video проигрывателей формат потребуется shell-скрипт movie-to-dvd из пакета VideoTrans. Например, имеем файл src.avi с фильмом в каком-либо формате, который может воспроизвести mplayer (именно его использует movie-to-dvd при транскодировании). Следующая, весьма коротенькая, команда преобразует src.avi в файл src.vob, готовый для записи на DVD-Video:

movie-to-dvd -M -m pal ./src.avi

Работа программы movie-to-dvd

Ключ «-M» указывает movie-to-dvd на то, что на выходе нужно получить один файл, содержащий аудио и видео, а не аудио и видео в отдельных двух файлах. Последнее может понадобиться при дальнейшей обработке материала, например при создании меню видео менеджера, дающее возможность интерактивно управлять процессом просмотра записанного диска. Ключ «-m pal» указывает на необходимость в выходном файле использовать систему PAL, используемую в телевизионных приемниках постсоветского пространства.

Подготовка файловой структуры (авторинг)

Во всех найденных мной статьях об авторинге DVD в Linux используется замечательный утилита DVDAuthor, которую я и использовал для решения задачи построения файловой структуры будущего DVD-Video диска.

Для корректной работы DVDAuthor требуется конфигурационный XML файл. Для нашего простейшего случая (ни меню, ни субтитров, ничего кроме самого видео нам не нужно) подойдет XML файл со следующим содержимым:

<dvdauthor>
<vmgm />
<titleset>
  <titles>
    <pgc>
      <vob file="src.vob" />
    </pgc>
  </titles>
</titleset>
</dvdauthor>

Итак, у нас уже имеется файл с именем src.vob, имеющий формат, подходящий для работы с ним программы DVDAuthor и конфигурационный XML файл, описывающий действия самой DVDAuthor. Следующая команда создает в каталоге dvd_structure структуру будущего DVD-Video диска:

 dvdauthor -o dvd_structure -x dvdauthor.xml

Опция «-o» задает имя выходного каталога, а опция «-x» — имя XML файла конфигурации.

Работа программы dvdauthor

Создание образа

Для создания образа с использованием программы genisoimage достаточно простой команды:

 genisoimage -dvd-video -o dvdimage.iso dvd_structure/

genisoimage

Запись

Для записи созданного образа используем программу wodim:

 wodim dev=/dev/hda dvdimage.iso

Естественно, замените /dev/hda на путь к устройству вашего DVD-RW привода.

wodim

Автоматизация

Для того, чтобы не запускать каждый раз всю последовательность команд (собственно, ради этого все и затевалось), я написал простой скрипт. Если кому-то вдруг пожелается его использовать — поменяйте значение первой переменной в скрипте соответственно расположению устройства для записи диском в вашем компьютере. При вызове скрипта передается всего лишь один параметр, который задает расположение исходного видеофайла. Также убедитесь, что каталог /tmp доступен вам для записи и там достаточно места для обработки видео материала. Если есть необходимость — можно поменять значение переменной $TMP_DIR

Что сделать

  • Запись более одного видео файла
  • Меню для выбора проигрываемого файла (VMGM)

Что почитать

Popularity: 73%

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • MySpace
  • PDF
  • Slashdot
  • Twitter

Статьи по теме:

  1. О формате DVD-Video

Опубликовано Среда, 09-01-2008 в 4:13 в рубрики Видео. Вы можете оставить отслеживать комментарии к записи при помощи RSS 2.0 ленты. Вы можете оставить комментарий, или трекбек с Вашего сайта.

15 комментариев на запись “Запись DVD-Video в Linux”

  1. Anonymous пишет:

    Молодец. Все по делу написал!

  2. Devil пишет:

    Пригодилось!

    Биг ап!

  3. ETY пишет:

    Класная вещь, научить бы еще dv формать обрабатывать :)

  4. Devil пишет:

    Вот только у меня, сразу не заметил, после кодирования AVI -> VOB , в фильме отстает звук, а то в конце вобще и исчезает. и так со всеми фильмами. Кто нибудь встречался с таким?

  5. flanner пишет:

    Да. Я встречался. Реально звук отстает.

  6. admin пишет:

    А если проиграть фильм mplayer'ом, запущенным из консоли, он ошибки каки-нить выдает на консоль?

  7. Devil пишет:

    Лень проверять, но какие там могут быть ошибки? Врядле что то будет. Как вариант ваша схема конвертирования работает, если перед этим всем в avidemux открыть файл с фильмом и перекодировать звук в AC3. я думаю в этом проблема.

  8. dovg’s blog » Запись dvd в linux пишет:

    [...] под дебианом из ави. Гугл ответил, что надо почитать вот это а потом скачать [...]

  9. mad_user пишет:

    У меня вопрос! Телик 4:3. Любой ДВД показывает с черными краями по горизонтали. А пытаюсь своять свой из 16:9, так он мне растягивает на телике. Помогите плиз.

    Хочется уже сразу нормально конвертить, чтоб потом стыдно небыло .

    Вот тут поподробнее... forum.ubuntu.ru/index.php?topic=25424.0

  10. не парьте мозги, пользуйтесь виндовс пишет:

    не парьте мозги, пользуйтесь виндовс

  11. admin пишет:

    А что это? :-)

  12. guest пишет:

    Как все сложно то :) . Надо быть полным маньяком-поклонником данной операционки чтобы так извращаться.

  13. virens пишет:

    Заметка интересная, унёс к себе в Scrapbook — часто бывает полезно, а скрипты писать лениво. Большое спасибо за пост!

    P.S. Не обращайте внимание на виндузятников, продолжайте в том же духе.

  14. Vovva пишет:

    А у меня дивидюшник Avi читает на ура и не надо париться ни Linux ни Widows

  15. ashep пишет:

    Да, на сегодняшний день DVD формат не так актуален. Но всё же, есть ещё в народном пользовании плееры, не умеющие читать AVI, MPG виде отдельных файлов и тому подобное.

Оставить комментарий