3.6. Reproducción de DVD

Para una lista completa de opciones disponibles, lea por favor la página de manual. La Sintaxis para un Disco Versátil Digital (DVD) estándar es la siguiente:

mplayer dvd://<pista> [-dvd-device <dispositivo>]

Ejemplo:

mplayer dvd://1 -dvd-device /dev/hdc

El dispositivo DVD por defecto es /dev/dvd. Si su configuración es diferente, haga un enlace simbólico o especifique el dispositivo correcto en la línea de órdenes con la opción -dvd-device.

Soporte para el DVD de Nuevo-estilo (mpdvdkit2).  MPlayer usa libdvdread y libdvdcss para desencriptación y reproducción. Estas dos bibliotecas están contenidas en el subdirectorio libmpdvdkit2/ del árbol de código fuente de MPlayer, no tiene que instalarlo por separado. Hemos optado por esta solución porque hemos corregido un error de libdvdread y aplicado un parche que añade soporte para cacheo de claves CSS crackeadas para libdvdcss. Esto resulta en un gran incremento de velocidad porque las claves no tienen que ser crackeadas cada vez que se reproduce.

MPlayer puede usar también bibliotecas libdvdread del sistema y libdvdcss, pero esta solución no se recomienda, porque puede resultar en fallos, incompatibilidades de bibliotecas y velocidad más lenta.

Nota

En caso de problemas de decodificación de DVD, pruebe a deshabilitar supermount, o cualquier otra utilidad de este tipo.

Estructura de DVD.  Los discos de DVD tienen 2048 bytes por sector con ECC/CRC. Normalmente tienen un sistema de archivos UDF en una pista simple, conteniendo varios archivos (archivos pequeños .IFO y .BUK y archivos grandes (1GB) .VOB). Son archivos reales y pueden ser copiados/reproducidos desde un sistema de archivos montado de un DVD sin encriptar.

Los archivos .IFO contienen la información de navegación por la película (capítulos/títulos/mapas de ángulos, tablas de idiomas, etc) y son necesarios para leer e interpretar el contenido del .VOB (la película). Los archivos .BUK son copias de seguridad de estos. Usan sectores por todos sitios, por lo que necesita usar direccionamiento crudo de sectores del disco para implementar navegación DVD o desencriptar el contenido.

El soporte DVD necesita acceso basado en sectores al dispositivo. Desafortunadamente debe (bajo Linux) ser root para obtener la dirección de un sector dentro de un archivo. Este es el motivo por el que no se usa el controlador interno del sistema de archivos del kernel, en su lugar se ha reimplementado en el espacio de usuario. libdvdread 0.9.x y libmpdvdkit hacen esto. El controlador de sistema de archivos UDF del kernel no es necesario ya que tenemos nuestro propio controlador de sistema de archivos UDF. Además el DVD no necesita estar montado ya que solo se usa acceso a nivel de sectores.

Algunas veces /dev/dvd no puede ser leído por los usuarios, por lo que los autores de libdvdread han implementado una capa de emulación que transfiere el direccionamiento por sectores a nombres de archivo + desplazamiento, para emular un acceso crudo sobre un sistema de archivos montado o incluso en un disco duro.

libdvdread incluso acepta un punto de montaje en lugar del nombre del dispositivo para acceso crudo y comprueba /proc/mounts para obtener el nombre del dispositivo. Esto ha sido desarrollado por Solaris, donde los nombres de los dispositivos son asignados dinámicamente.

El dispositivo por defecto de DVD es /dev/dvd. Si su configuración no coincide con esto, haga un enlace simbólico, o especifique el dispositivo correcto en la línea de órdenes con la opción -dvd-device.

Autenticación para DVD.  La autenticación y el método de desencriptación del soporte de DVD al nuevo-estilo se ha hecho usando una versión modificada de libdvdcss (vea más arriba). Este método peude ser especificado a través de la variable de entorno DVDCSS_METHOD, que puede ser establecido a key, disk o title.

Si no se especifica nada se prueban los siguientes métodos (por defecto: key, petición de título):

  1. bus key: Esta clave es negociada durante la autenticación (una larga mezcla de ioctls y varios intercambios de claves, material de encriptación) y es usada para encriptar el título y las claves de disco antes de enviarlas sobre el bus sin proteger (para prevenir robos de claves). El bus key necesita obtener y predesencriptar la clave encriptada de disco.

  2. cached key: MPlayer mira a ver si el título ya ha sido crackeado con una clave almacenada en el directorio ~/.mplayer/DVDKeys (rápido ;).

  3. key: Si no hay una clave disponible en caché, MPlayer intenta desencriptar la clave del disco con un conjunto de claves de reproductor incluidas.

  4. disk: Si el método key falla (p.e. no hay claves de reproductor incluídas), MPlayer crackeará la clave del disco usando un algoritmo de fuerza bruta. Este proceso usa la CPU de manera intensiva y requiere 64 MB de memoria (una tabla hash de 16M 32Bit entradas) para almacenamiento temporal de datos. Este método debe funcionar siempre (lento).

  5. title request: Con la clave del disco MPlayer pide las claves encriptadas de los títulos que están dentro de sectores escondidos usando ioctl(). La protección por región de unidades RPC-2 se hace en este paso y puede fallas en algunas unidades de disco. Si funciona bien, las claves de títulos son desencriptadas con las claves de bus y de disco.

  6. title: Este método es usado si la búsqueda de título falla y no sale en ningun intercambio de clave con la unidad de DVD. Usa un ataque de encriptación para buscar la clave del título directamente (encontrando un patrón que se repita en el contenido del VOB desencriptado y comprobando que el texto plano corresponde a los primeros bytes encriptados como una continuación del patrón). El método es también conocido como "ataque de texto plano conocido" o "DeCSSPlus". En raras ocasiones esto falla porque no hay suficientes datos desencriptados en el disco para realizar un ataque estadístico o porque las claves cambian en mitad de un título. Este método es la única manera de desencriptar un DVD almacenado en un disco duro o en un DVD con la región incorrecta en una unidad RPC2 (lento).

Las unidades de DVD RPC-1 solo protegen la configuración de región a través de software. Las unidades RPC-2 tienen una protección por hardware que permite tan solo 5 cambios. Puede ser necesario/recomendable actualizar el firmware a RPC-1 si tiene una unidad RPC-2. Las actualizaciones de firmware puede encontrarse en esta página del firmware. Si no hay una actualización del firmware disponible para su dispositivo, use la herramienta regionset para establecer el código de región de su unidad de DVD (bajo Linux). Advertencia: Solo puede establecer la región 5 veces.