Запись DVD-Video в Linux






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

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

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

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

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

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

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

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

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

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

genisoimage

Запись

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

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

wodim

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

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

Что сделать

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

Что почитать




Запись DVD-Video в Linux: 16 комментариев

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

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

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

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

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

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

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

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

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

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

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

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

  9. Смешно... вот уже под Линухом стало проще жить, чем под мастдаем. Слить полтора метра (не искать дистрибутив, не искать кряк, не устанавливать, не ебалаиться с опциями, которых половины нет, а половина глючит, просто одна чёртова apt-get install videotrans сама всё сделает от и до), и ввести три команды. Чего-то я пропустил в этой жизни.

Комментарии запрещены.