Ripear DVD con FFmpeg, Recargado

Hace tiempo escribí algunos posts con instrucciones para ripear un DVD usando FFmpeg. En esos posts mencionaba que primero deberías probar con Handbrake antes de intentar ripear el DVD de la forma difícil desde la línea de comandos usando MPlayer y FFmpeg. Entonces, ¿cuál es la razón para escribir este post? ¿Cuál es el problema con Handbrake?. El problema de Handbrake es el típico problema de Linux de interfaces de usuario terribles 😦 . Si eres como yo y quieres ripear todos los títulos de un DVD, con Handbrake tienes que seleccionar un título, configurar las opciones, agregarlo a la cola de tareas y después seleccionar el siguiente título y repetir 😦 . Aunque el proceso puede tomar solamente unos cuantos clicks, cuando te encuentras con un DVD con muchos títulos, esos son algunos cientos de clicks más de los que quiero hacer; sin mencionar que tienes que escribir manualmente el nombre para cada uno de los archivos de salida ya que Handbrake te sugerirá el mismo nombre para todos los títulos sin importar si ya tienes uno con ese nombre en la cola de tareas. No entiendo como el programa “especializado” para ripear DVDs no tiene una opción para seleccionar varios o todos los títulos de un DVD 😦 .

Read More

Convertir video para reproductor de DVD LG DP122

Muchos reproductores de DVD antiguos de la marca LG tienen soporte para reproducir archivos de video MPEG4 (no confundir con MP4) basado en los codecs Xvid o DivX. Estos codecs eran los más populares en el internet de hace unos años antes de la llegada de codecs como x264. Si, como yo, tienes uno de estos antiguos reproductores de DVD y quieres convertir un video al formato MPEG4 para poder reproducirlo, debes tener en cuenta las siguientes condiseraciones:

  • Revisa que tu reproductor de DVD tenga el logo MPEG4 o DivX.

  • El formato contenedor debe ser AVI, recuerda que es un reproductor antiguo.

  • El codec de video debe ser Xvid o DivX.

  • El codec de audio debe ser MP3.

  • El FourCC de video debe ser XVID o DIVX.

  • Los formatos soportados por tu DVD pueden ser diferentes, revisa la documentación.

Para convertir un video al formato necesario para reproducirlo en el DVD usaremos FFmpeg:

monstruosoft@debian:~$ ffmpeg -i video.mkv -c:v mpeg4 -vtag XVID -c:a mp3 -b:a 128k -q:v 4 salida.avi

La opción -vtag hará que FFmpeg use el FourCC XVID en lugar del valor predeterminado FMP4 que no es reconocido por el reproductor de DVD.

Grabar DVD en Debian Stretch

Después de años sin grabar un DVD, hace poco me vi en la necesidad de volver a utilizar el arcano arte de usar el quemador de discos de mi PC. En el pasado escribí un par de posts sobre las herramientas para grabar CD/DVD en Linux pero no puedo creer que nunca escribí un post con las instrucciones para grabar un disco con esas herramientas. En posts anteriores mencioné que tuve malas experiencias con algunas herramientas GUI y había otras con las que simplemente no podía soportar su horrible interfaz gráfica así que la línea de comandos era la última alternativa.

Desde que actualicé a Debian Stretch no recuerdo haber grabado un solo DVD así que no es de sorprender que no tuviera instalada ninguna herramienta GUI en mi sistema. Después de años sin grabar un DVD tampoco recordaba las instrucciones para hacerlo así que probé con cdw, un programa con una interfaz gráfica pero en modo de consola. Desafortunadamente cdw me marcaba errores con el disco DVD-RW que intentaba utilizar 😦 , esto me hizo preguntarme, tal como me lo preguntaba hace años, ¿por qué una tarea tan básica como quemar un disco tiene que ser tan complicada en Linux? Tienes que pelear con el software porque ¡las herramientas hechas para una tarea específica fallan al intentar llevar a cabo esa tarea! ¡Esta es una de las razones por las que Linux nunca será apto para un usuario común y corriente!.

cdw-error

Por cierto, para borrar un DVD: wodim dev=/dev/sr0 blank=fast

En fin, tal parece que todas las herramientas GUI, ya sea gráficas o de consola, para quemar discos son terribles para esa tarea, no me quedaba más que usar la línea de comandos.

Grabar un DVD desde la línea de comandos es un proceso de dos pasos en Debian Stretch; primero debemos usar genisoimage para generar un archivo .iso que contenga los archivos que deseamos grabar. A continuación debemos grabar el archivo .iso al DVD usando una herramienta como wodim. Sí, sé que también escribí en el pasado un post sobre cómo instalar una versión actual de cdrtools pero esta vez no valía la pena hacer todo eso para grabar un simple DVD.

Para generar una estructura compleja de directorios con genisoimage es necesario usar la opción -graft-points, tal como lo indica la documentación, pero para grabar simplemente unos cuantos archivos al DVD podemos usar algo como:

monstruosoft@debian:~$ genisoimage -v -J -r -V ETIQUETA -o file.iso archivo1.txt archivo2.jpg
monstruosoft@debian:~$ wodim -v dev=/dev/sr0 -dao file.iso

El ejemplo anterior generará con genisoimage un archivo .iso que contiene los archivos archivo1.txt y archivo2.jpg y a continuación grabará el DVD usando wodim. Así que, básicamente, es necesario crear un archivo .iso temporal, lo que significa que si quieres grabar un DVD de 4 GBs necesitas generar en tu disco duro un archivo temporal de 4 GBs, eso apesta, ¿cierto?. Bueno, aquí es donde las pipes entran al rescate; es posible enviar la salida de genisoimage directamente a wodim ya sea usando una pipe:

monstruosoft@debian:~$ genisoimage -v -J -r -V ETIQUETA archivo1.txt archivo2.jpg | wodim -v dev=/dev/sr0 -tao -

o una named pipe:

monstruosoft@debian:~$ mkfifo my_pipe
monstruosoft@debian:~$ genisoimage -v -J -r -V ETIQUETA -o my_pipe archivo1.txt archivo2.jpg
monstruosoft@debian:~$ wodim -v dev=/dev/sr0 -tao my_pipe

Si obtienes un error al utilizar wodim junto con una pipe o named pipe es posible que necesites especificar el tamaño del archivo .iso con anticipación. Puedes obtener un cálculo del tamaño del archivo .iso que generará genisoimage usando el siguiente comando:

monstruosoft@debian:~$ genisoimage -R -q -print-size archivo1.txt archivo2.jpg
40296

El número que imprime el comando anterior es el tamaño en sectores de la imagen .iso que generará genisoimage para los archivos especificados. Conociendo con anticipación el tamaño del archivo .iso es posible usar la opción -dao de wodim usando una pipe o named pipe, por ejemplo:

monstruosoft@debian:~$ genisoimage -v -J -r -V ETIQUETA -o my_pipe archivo1.txt archivo2.jpg
monstruosoft@debian:~$ wodim -v dev=/dev/sr0 -dao -tsize 40296s my_pipe

Nota la s al final del valor del argumento -tsize, ésta indica que el valor está en sectores y no en bytes.

Ripear un DVD con FFmpeg

Cuando se trata de ripear un DVD con Linux, la forma más sencilla es tal vez usando Handbrake, que se puede instalar desde el gestor de paquetes. Entonces, ¿por qué querrías ripear un DVD usando FFmpeg? Bueno, en realidad tal vez no haya ninguna razón; si Handbrake funciona bien, ¡úsalo!. En este caso en particular, encontré una imagen de DVD que tenía problemas para ripear con Handbrake -sigue leyendo para descubrir cuál era el problema- así que decidí hacerlo a la antigua y usar FFmpeg.

Read More

Desaventuras en la tierra de Linux, parte 6

Como ya he comentado en ocasiones anteriores, en realidad me agrada Linux; cuando me cambié definitivamente a Linux pensé que me costaría más acostumbrarme pero la verdad es que no he tenido problemas para hacer todo lo que hacía en Windows e incluso en algunos puntos creo que Linux es mejor. Sin embargo, lo anterior no quiere decir que Linux esté libre de problemas; ya he comentado también que tiene detalles molestos, casi siempre relacionados a las opciones de software disponible para una tarea. Esta vez el problema es el software de Linux para quemar CDs o DVDs.

Read More