|
G A C E T A D E L I N U X
...haciendo a Linux un poco más divertido! |
|
Creación de
DVDs Por Chris Stoddard Traducción al español por Jesús Fuenlabrada el día 27 de Enero de 2004, para La Gaceta de Linux |
Este documento proporciona los pasos necesarios para hacer un DVD que funcionará en un reproductor de sobremesa, usando Linux y un grabador DVD+RW o DVD-RW.
Me maravillo constantemente de lo fácil que es realizar cosas en Linux una vez que alguien ha realizado el proceso. La creación de DVDs es un buen ejemplo de esto, todas las piezas están en su lugar, toda la información está disponible y es relativamente fácil de hacer, pero no hay un documento sencillo mostrando como hacerlo. La creación de DVDs bajo Linux está todavía en su infancia, no hay herramientas para menús o funcionalidades avanzadas, por ahora todo lo que podemos hacer es un sencillo DVD contínuo, que es suficiente para los videos caseros y las grabaciones de programas de TV. No discutiré la edición de video aquí, asumo que o grabarás de la TV o tendrás una cinta de video que quieres transferir a un DVD.
No voy a entrar en mucho detalle acerca de la instalación del hardware, si no sabes como instalar tu hardware, te proporciono enlaces a artículos para ayudarte.
Cada uno de estos paquetes tiene su propio procedimiento de instalación, por favor sigue las instrucciones para cada paquete individual.
Las herramientas dvd+rw no tienen Makefile. Puedes construir los binarios haciendo esto:
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
Grabar el video es el paso más importante, el tamaño del video y el frame rate deben ser los correctos. El siguiente comando usa streamer, que viene con xawtv para grabar el video:
streamer -n ntsc -t 60:00 -s 720x480 -r 30 -o stream.avi -f mjpeg -F stereo -c /dev/video0
La opció:n -n es para el formato, si usas PAL, cambia ntsc por pal. La opción -t es el tiempo de grabación en minutos. -s es el tamaño del video, en USA usamos NTSC que requiere que el video sea 720x480. Si usas PAL, cambia esto a 720x576. -r es el frame rate, para NTSC usa 30, para PAL usa 24. -c es el dispositivo de video, cambialo si es necesario. El resto de las opciones deben permanecer sin cambiar.
La siguiente cosa para hacer es codificar adecuadamente el audio y el video en algo que un reproductor de DVD pueda leer. Las herramientas que necesitamos para esto son mjpeg-tools. Esta línea de comando saca el audio fuera de tu fichero avi y la codifica a audio mp2. La ocpión -V actualmente es para compatibilidad VCD, pero funciona en nuestro caso:
lav2wav +p stream.avi | mp2enc -V -o audio.mp2
Lo siguiente es sacar el video y codificarlo a video mpeg. Esta parte es la que tarda más, por lo que cuanto más rápido sea tu sistema mejor. Las opciones importantes son -f 8, que asegura que el video será compatible con DVD y -n n, que es para NTSC, si estas usando PAL cambialo a -n p:
lav2yuv +p stream.avi | mpeg2enc -n n -f 8 -s -r 16 -o video.m1v
Ahora necesitamos unir los dos ficheros codificados. Asegúrate de usar la opción -f 8 para la compatibilidad de video con DVD:
mplex -f 8 audio.mp2 video.m1v -o complete.mpg
Para que nuestro disco pueda ser visto en un reproductor DVD de sobremesa, la estructura de directorios TIENE que ser perfecta, por eso por favor asegúrate que tecleas los siguientes comandos como se muestra, en el orden adecuado:
mkdir dvd mkdir dvd/VIDEO_TS
Lo siguiente que necesitamos es un fichero IFO con la Tabla de Contenidos, teclea:
tocgen > dvd/VIDEO_TS/VIDEO_TS.IFO
Ahora queremos copiar nuestro fichero de video codificado en la estructura y darle los permisos correctos, teclea:
cp complete.mpg dvd/VIDEO_TS/VTS_01_1.VOB chmod u+w dvd/VIDEO_TS/*.VOB
Los ficheros IFO y BUP proporcionan a los reproductores de DVD información específica sobre el fichero de video que está intentando procesar, ifogen busca en el video y extrae la información necesaria. Para generar los ficheros necesarios usa la siguiente línea de comandos:
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)
Ahora necesitamos generar una imagen iso que pueda ser quemada en un disco DVD. Asegúrate que estas usando la versión de mkisofs que viene con dvdrtools, que soporta el sistema de ficheros de DVD:
mkisofs -dvd-video -udf -o dvd.iso dvd/
Y, finalmente, podemos quemar nuestro disco. Si estás usando una grabadora DVD+RW vieja de primera generación, el disco necesitará ser formateado antes de que la imagen pueda ser quemada, usa los siguientes comandos, reemplazando srcd0 por el nombre del dispositivo de tu grabadora:
dvd+rw-format -f /dev/srcd0 growisofs -Z /dev/srcd0=dvd.iso
Si estás usando una más nueva DVD-RW, no es necesario formatear, dvdrecord hará el trabajo:
dvdrecord -dao speed=2 dev=0,0,0 dvd.iso
El problema más común con este proceso es la sincronización de audio. La primera cosa que debes probar es optimizar tu disco duro con hdparm, activar la E/S de 32 bits y el DMA, algo así como esto:
hdparm -c 1 -d 1 /dev/hdaLo siguiente, carga el driver bttv con la opción gbuffers=10:
modprobe bttv gbuffers=10
Esto debe solucionar cualquier problema de sincronización de audio, si no lo hace, puedes necesitar usar la opción -O n al ejecutar mplex. Esto retarda el video en n milisegundos. El problema con esto es que es un proceso de prueba y error y algunas veces deja el video en un estado que causa a ifogen un error de "segfault". También es posible grabar el video en un tamaño más pequeño, por ejemplo 352x240, entonces usa yuvscaler que viene con mpjeg-tools para cambiar el tamaño a 720x480, pero yo no he probado esto.
Este proceso no te dará una calidad de video comparable a los DVDs "comprados en la tienda", la calidad dependerá mucho de la calidad de la fuente de tu captura, por eso debes usar los ajustes de mejor calidad que puedas cuando grabes cualquier cosa en cinta de video que tengas intención de quemar en DVD. Este proceso tarda varias horas, yo uso el shell script de abajo para que haga el trabajo por mi, mientras yo estoy en el trabajo o en la cama durmiendo. 100 minutos de video requerirán cerca de 11 GB para grabar, 2 GB para codificar y 1 GB para la imagen iso. Tu rendimienhto cambiará.
Versión en texto de make-dvd.sh-----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 stereo -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-----