The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Запись собственных DVD на DVD+RW или DVD-RW приводе в Linux (linux cdrom dvd mpeg video)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, cdrom, dvd, mpeg, video,  (найти похожие документы)
From: Юрий Прушинский <prushinsky@hotbox.ru> Newsgroups: gazette.linux.ru.net Date: Mon, 4 Apr 2003 13:01:37 +0000 (UTC) Subject: Запись собственных DVD на DVD+RW или DVD-RW приводе в Linux Оригинал: http://gazette.linux.ru.net/lg83/stoddard.html Запись собственных DVD в Linux Автор: (c) 2002 Chris Stoddard Перевод: (c) 2003 Юрий Прушинский <prushinsky@hotbox.ru> _________________________________________________________________ В этой статье речь пойдёт о том, как сделать собственный DVD-диск (используя Linux и DVD+RW или DVD-RW привод), совместимый с большинством стандартных плейеров. Содержание * 1. Вступление * 2. Необходимое оборудование * 3. Необходимое ПО * 4. Кодирование и запись видео * 5. Возможные проблемы с синхронизацией аудио сигнала * 6. Заключение Вступление Меня всегда поражает насколько просто в Линуксе совершенствовать и развивать уже начатые кем-то проекты. Запись собственных DVD в Линукс тоже попадает в категорию подобных задач - вроде бы все инструменты для этого есть, и в информации на эту тему недостатка не наблюдается, но нигде до сих пор нет полного документа, описывающего весь процесс "от и до". Конечно, запись DVD под Линукс находится еще во "младенчестве", нет ещё продвинутых средств редактирования с поддержкой меню и других функций, но на данном этапе уже вполне возможно записывать и сохранять домашнее видео или ТВ-передачи в формате DVD. Я не буду рассматривать редактирование видео, а просто опишу процесс записи сигнала с ТВ или с видеокассеты на DVD. Необходимое оборудование: Я также не хочу вдаваться в тонкости установки и настройки необходимого железа, если вы не знаете как его устанавливать, то обратите внимание на следующие статьи, надеюсь, они вам помогут. * Устройство для захвата видео. Лично я пользуюсь картой Hauppauge WinTV PCI, карты с ТВ-тюнером достаточно дешевы и купить их можно практически в любом компьютерном магазине. К тому же они довольно хорошо поддерживаются в Линуксе. Естественно, есть и дорогие аналогичные устройства, которые позволяют захватывать видео с высоким качеством, но очень немногие из их числа будут работать в Линуксе. См. статью "Видеоприложения на Вашем Linux" на Russian Linux Gazette (http://gazette.linux.ru.net/lg62/articles/rus-silva.html) * Привод DVD+RW или DVD-RW. Я пользуюсь старым приводом Ricoh MP5120A DVD+RW, который я приобрел за 150 долларов. К счастью, подобные приводы устанавливаются аналогично стандартным приводам CD-RW. Кроме этого желательно, чтобы наш привод имел возможность проигрывать DVD-диски. Поэтому убедитесь, что ваш DVD-плейер поддерживает формат дисков, в котором вы собираетесь записывать их на своем пишущем устройстве. См. статьи "Просмотр DVD в Linux" на Russian Linux Gazette ( http://gazette.linux.ru.net/lg81/durodola.html) и "Запись CD на приводе ATAPI CDR Mini-HOWTO" на Linux Gazette http://linuxgazette.com/issue57/stoddard.html * Быстрый ЦП (процессор) и большой жесткий диск. У меня лично Athlon 1600XP, RAM 384 MB и 40 GB жесткий диск. Я бы наверное и не рискнул заниматься всем этим делом, если бы система была слабее 1Ghz и меньше 20Gb свободного места на диске. Необходимое ПО: Каждый из этих пакетов имеет свой способ и особенности установки, так что пожалуйста, изучите инструкции по установке для каждого из них. * xawtv понадобится нам в качестве стримера, который мы будем использовать для записи видео: xawtv (http://bytesex.org/xawtv/) * mjpeg-tools понадобятся для кодирования записанного видео в формат DVD: mjpeg-tools (http://mjpeg.sourceforge.net/) * dvdauthor является основной из всех других используемых программ, без нее у нас ничего не получится. Эта программа генерирует IFO файлы, которые необходимы для DVD-плейера. Устанавливается она довольно просто - соберите командой make, и затем скопируйте получившиеся "бинарники" в /usr/local/bin: dvdauthor http://sourceforge.net/project/showfiles.php?group_id=59028 * dvdrtools, утилита-аналог cdrtools, которая потребуются для записи на новые DVD-RW приводы: dvdrtools (http://www.freesoftware.fsf.org/dvdrtools/) * dvd+rw tools понадобятся для записи на старые устройства DVD+RW, так что они нужны только обладателям первого поколения приводов DVD+RW: dvd+rw tools (http://fy.chalmers.se/~appro/linux/DVD+RW/) У dvd+rw tools нет Makefile, поэтому собрать "бинарники" можно следующим образом: gcc dvd+rw-format.c mv a.out dvd+rw-format cp dvd+rw-format /usr/local/bin gcc growisofs.c mv a.out growisofs cp growisofs /usr/local/bin Кодирование и запись видео: Одним из самых ответственных шагов является правильный захват видео: нужно корректно указать размер видео и частоту смены кадров. Следующая команда для записи видео использует стример, который входит в состав xawtv: streamer -n ntsc -t 60:00 -s 720x480 -r 30 -o stream.avi -f mjpeg -F stereo - c /dev/video0 Здесь параметр -n указывает формат, так что если вы используете PAL, то измените ntsc на pal. Параметр -t устанавливает время записи в минутах, -s указывает размер видео, в США мы пользуемся NTSC, который использует размер видео 720x480, если же вы используете PAL, то смените размер на 720x576. Параметр -r определяет частоту смены кадров, для NTSC нужно выставить значение 30, для PAL - 24. Ну, и наконец, -c определяет видео устройство (измените его, если это необходимо). Остальные параметры изменять не нужно. Следующее, что нам необходимо сделать, это правильно закодировать видео и аудио информацию в какой-нибудь удобоваримый для DVD-плейера формат. Для этого мы воспользуемся утилитами из mjpeg-tools. Следующая команда вытаскивает весь звуковой сигнал из avi-файла и кодирует его в mp2 audio. Ключ -V здесь нужен для совместимости с форматом VCD: lav2wav +p stream.avi | mp2enc -V -o audio.mp2 Далее вытаскиваем видео и кодируем его в mpeg. Продолжительность этого процесса напрямую зависит от мощности вашей системы. Здесь для нас важны опции -f 8, которая делает видео совместимым с DVD, а также -n n, что означает "использовать NTSC", соответственно. Смените на -n p для PAL: lav2yuv +p stream.avi | mpeg2enc -n n -f 8 -s -r 16 -o video.m1v Теперь надо объединить два получившихся закодированных файла. При этом не забудьте про ключ -f 8 для совместимости с DVD: mplex -f 8 audio.mp2 video.m1v -o complete.mpg Чтобы наш диск читался на любом DVD-плейере, его структура ДОЛЖНА быть идеальной, так что убедитесь что вы выполнили следующие команды именно так, как показано: mkdir dvd mkdir dvd/VIDEO_TS Далее создаем IFO файл, содержащий Table of Content: tocgen > dvd/VIDEO_TS/VIDEO_TS.IFO Теперь копируем наш кодированный видео файл в структуру директорий диска и даем ему нужные атрибуты: cp complete.mpg dvd/VIDEO_TS/VTS_01_1.VOB chmod u+w dvd/VIDEO_TS/*.VOB IFO и BUP файлы содержат информацию для DVD-плейера, определяющую свойства видео файла, который он пытается воспроизвести. Утилита ifogen анализирует видео и вытаскивает требуемую информацию. Для создания необходимых файлов выполните следующую команду: ifogen -f dvd/VIDEO_TS/VTS_01_1.VOB > dvd/VIDEO_TS/VTS_01_0.IFO (cd dvd/VIDEO_TS; for i in *.IFO; do cp $i `basename $i .IFO`.BUP; done) Далее надо создать iso образ, который можно будет записать на DVD-диск. Только убедитесь, что вы воспользуетесь при этом той версией mkisofs из состава dvdrtools, которая поддерживает файловую систему DVD: mkisofs -dvd-video -udf -o dvd.iso dvd/ Ну, и, наконец, приступаем к записи нашего диска. Если вы пользуетесь приводом DVD+RW старого поколения, то сначала болванку диска нужно отформатировать. Для этого выполните следующие команды и замените srcd0 на имя вашего пишущего устройства: dvd+rw-format -f /dev/srcd0 growisofs -Z /dev/srcd0=dvd.iso Если же у вас новый привод DVD-RW, то это делать необязательно -- это выполнит сама утилита dvdrecord: dvdrecord -dao speed=2 dev=0,0,0 dvd.iso Возможные проблемы с синхронизацией аудио сигнала Наиболее часто возникают проблемы при синхронизации аудио сигнала. При этом вам надо попробовать настроить ваш жесткий диск - включить 32 bit I/O и DMA: hdparm -c 1 -d 1 /dev/hda Далее, загрузить драйвер bttv с опцией gbuffers=10: modprobe bttv gbuffers=10 По идее это должно решить любые проблемы с синхронизацией звука. Если это не помогло, то попробуйте использовать опцию -O n при использовании утилиты mplex. Она позволяет задерживать видео на n миллисекунд. Недостаток этого в том, что все надо делать методом проб и ошибок, и довольно часто на обработке объединенного видеофайла ifogen вылетает (segfault). Кроме этого, можно попробовать записать видео в меньшем размере, скажем в 352x240. Для этого воспользуйтесь yuvscaler из комплекта mjpeg-tools и уменьшите исходный размер с 720x480. Но лично я этого никогда не пробовал. Заключение: Весь вышеописанный процесс, конечно, не позволит вам записать DVD такого же качества, как и на лицензионных дисках, которые продаются в магазинах, хотя качество видео будет в основном зависеть от устройства захвата видеосигнала или от самого источника видеосигнала, так что используйте наилучшие настройки при записи на видеокассету, с которой потом будете переписывать изображение на DVD. Сам процесс может занять несколько часов, так что я написал скрипт, который делает всё за меня, пока я занимаюсь своими делами или сплю. Учтите, что 100 минут видео займет около 11 ГБ в несжатом виде, 2 ГБ после сжатия и 1ГБ в виде iso образа. Текстовая версия скрипта make-dvd.sh (http://gazette.linux.ru.net/lg83/misc/stoddard/make-dvd.sh.txt) -----make-dvd.sh----- #!/bin/sh # Cleans out any left over files and makes the necessary directories rm -r -f dvd video dvd.iso mkdir dvd mkdir dvd/VIDEO_TS mkdir video # Changes the channel on the TV tuner card v4lctl setstation 3 # Records the video stream streamer -n ntsc -t 60:00 -s 720x480 -r 30 -o video/stream.avi -f mjpeg -F ster eo -c /dev/video0 # Encodes the video stream lav2wav +p video/stream.avi | mp2enc -V -o video/audio.mp2 lav2yuv +p video/stream.avi | mpeg2enc -n n -f 8 -s -r 16 -o video/video.m1v mplex -f 8 video/audio.mp2 video/video.m1v -o video/complete.mpg # Builds DVD image from the encoded video # This portion of the script was lifted directly from # the writedvd script which comes with the dvdauthor tools tocgen > dvd/VIDEO_TS/VIDEO_TS.IFO cp video/complete.mpg dvd/VIDEO_TS/VTS_01_1.VOB chmod u+w dvd/VIDEO_TS/*.VOB ifogen -f dvd/VIDEO_TS/VTS_01_1.VOB > dvd/VIDEO_TS/VTS_01_0.IFO (cd dvd/VIDEO_TS; for i in *.IFO; do cp $i `basename $i .IFO`.BUP; done) mkisofs -dvd-video -udf -o dvd.iso dvd/ # Burns the DVD for 1st Generation DVD+RW # Comment out the dvd+rw-format line if the disc is already formated and # contains no data. # Comment these two lines out if you are using a newer drive dvd+rw-format -f /dev/srcd0 growisofs -Z /dev/srcd0=dvd.iso # Burns DVD for more modern DVD formats like DVD-RW # Uncomment this line if you are using a newer drive #dvdrecord -dao speed=2 dev=0,0,0 dvd.iso -----make-dvd.sh----- Copyright © 2002, Chris Stoddard. Copying license http://www.linuxgazette.com/copying.html Published in Issue 83 of Linux Gazette, October 2002

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Ruslan Popov (?), 12:24, 11/07/2006 [ответить]  
  • +/
    Для DVD надо использовать AC3! Иначе звук вы услышите только на китайских DVD плейерах.
     
  • 2, noname (??), 22:56, 10/10/2007 [ответить]  
  • +/
    Эта статья вообще не позволит создать сколь-нибудь удобоваримый двд.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру