Encodding Divx en Linux.
Encodding Divx en Linux
Encodding Divx en Linux
1. Sobre el artículo
2. Advertencia
3. Para qué
encodear Divx en Linux (cuando en Win32 existen variados y útiles
programas y codecs) ?
4. Programas a usar
5. Librerías necesarias
5.1 Librerías
para Mplayer/Mencoder
5.2 Librerías
para Dvdrip/Transcode
5.3 Librerías en
source
6. Algunas palabras acerca
de los codecs
7. Compilando Mplayer/Mencoder
8. Preliminares
9.1 Con Vobcopy
9.2 Con Dvdrip
10. Transcodeando
el DVD/Video a un AVI
10.1 Pros
y contras de Mencoder y Transcode
10.2 Video entrelazado
10.3 Aspect Ratios
11.1 Clip y Zoom
11.2 Eligiendo
parámetros de encodding
11.3 Generando una
vista previa
11.4 Previniendo
desincronización audio/video
11.5 Terminando el encodeado
12. Para usuarios
avanzados de Transcode : argumentos de línea de comando
13. Usando Mencoder
13.1 2-pass
encoding (el método de las dos pasadas)
13.2 3-pass
encoding (el método de las 3 pasadas)
13.2.1
Como verás hay varios métodos con el mismo nombre
13.3 \'Three pass
encodding\' (método de las tres pasadas) - Libavc y pasadas internas
13.3.1 Encodeando
el audio
13.3.2 Generando
un preview (primera pasada - first pass)
13.3.3 Generado
una preview (segundo pasada - second pass)
13.3.4 Generando
el archivo AVI final
13.4 \'Two
pass encodding\' (método de las dos pasadas) - Libavc y pasadas internas
13.5 \'Three
pass encodding\' (método de las tres pasadas) - Divx4 y pasadas externas
13.6 \'Two
pass encodding\' (método de las dos pasadas) - Divx4 y pasadas externas
13.7 Calculando
el tamaño en base al vrate
13.8 Cropping del
video con Mencoder
13.9 Usando la familia
de codecs Libavcodec
13.10 Notas
finales sobre encodding con Mencoder
14.1 Convirtiendo
subtítulos a formato de texto
14.2 Compilando
las herramientas
14.3 Extrayendo
el stream del subtítulo
14.4 Conviertiendo
el stream raw
14.5 Extrayendo subtítulos
de DVD a archivos Vobsub con Mencoder
14.5.1 Ejemplos
de como bajar subtítulos con Mencoder
15.1 Arreglando
audio desincronizado con Transcode
15.2 Dividiendo
AVIs (splitting) con Transcode
15.3 Extrayendo audio de
VOBs/MPEGs/AVIs con Mplayer
15.4 Reescalando
películas/videos con Mplayer/Mencoder
15.5 Encodeando
desde múltiples archivos de imágenes (JPEGs o PNGs)
con Mencoder
15.5.1 Soporte
Activado o no
15.5.2 Explicación
del Encodding de múltiples imágenes
15.5.3 Ejemplos
de encodding desde múltiples archivos de imágenes (JPEGs
o PNGs)
15.6 Copia de Stream
con Mencoder (stream copying)
15.7 Arreglando
AVIs con índices rotos o mal interleaving con Mencoder
15.8 Usando
archivos de audio separados con Mplayer
15.9 Un editor
visual de AVIs: Avidemux
16.1 Librerías, codecs
16.2 Players
16.3 Encoders
16.4 Otra documentación
16.5 Listas de Correo
17.1 CBR, VBR and ABR
17.2 Global Motion
Compensation (GMC)
17.3 Letterboxing
17.4 P/I/B-Frames, GOPs
17.5 Quarter Pixel (QP)
1. Sobre el artículo:
Este artículo está fuertemente basado en \'Divx ripping
and transcodding in Linux\' y en la documentación de Mplayer
en otros artículos en español e inglés, contiene
también sustanciales adiciones propias. La idea nació con
la intención de traducir el primero mencionado, pero la, no
escasa pero sí, dispersa documentación en español
me dió la idea de escribir mis propias adiciones y añadir
la traducción y otros textos para formar un solo documento que
abarque \'todo\' el proceso desde la compilación de Mplayer, hasta
el ripeo y encodding con Dvd::rip o Mencoder, explicando también
otros aspectos del tema. Creo que la reutilización funcionó
muy bien con la cantidad de información que hay sobre este tema.
2. Advertencia:
Los procedimientos descritos aquí implican un mínimo conocimiento
acerca de compilación (configure, make, make install, etc.),
también gestion de rpms (instalación, comprender que
es un problema de dependencias y poder resolverlo, etc.). Aún
así, puedes intentarlo porque el proceso es complejo, pero no
difícil. Si aún quieres rippear y encodear videos puedes
pasarte a Windows y usar las herramientas gráficas
ahí disponibles. No quiero iniciar una \'flame war\' de Linux VS
Windows con esto, simplemente es un hecho que el proceso es más
sencillo de realizar ahí. Dicho esto...
3. Para
qué encodear Divx en Linux (cuando en Win32 existen variados y
útiles programas y codecs) ?
1) Buscamos una mejora en la velocidad de compresión basada en
la optimización de los programas y librerías que usaremos por
compilarlos específicamente para el hardware que usaremos (i686 o
superior recomendado). También contribuirá el buen manejo que
hace Linux de procesos y memoria y la posibilidad de brindar al proceso de
compresión practicamente la totalidad de los recursos del hardware
libres (excepto los que usa el s.o.), descargando servicios y programas (como
Xwindow), no necesarios. Y no tendremos que desperdiciar un solo ciclo de
cpu en vastas y pesadas interfases gráficas. ; )
2) El Mencoder (así como el Transcode), nos permite un control
muy alto de las variables posibles para setear la compresión de audio/video
y esto tiene relación directa con la calidad final de la
imagen.
3) Algunos codecs como Xvid y Libavc fueron implementados originalmente
para plataformas Linux (hoy están disponibles para win32,
aunque el encodding con Libavc en win32 es aún inestable),
y se los considera como de muy alta calidad compitiendo directamente
contra implementaciones comerciales. Es de esperar que en el futuro
cercano codecs libres de audio y video de alta calidad estén
disponibles primero para Linux o *nix. Por ejemplo, Oggvorbis, al que
se presenta como de calidad superior al mp3 y mp3PRO.
4) Tan solo por el gusto de usar tu propio s.o. para trastear con vídeos
y (plus) desde consola (freaks only, claro).
4. Programas a usar:
Dos programas que usaremos son Mplayer y Mencoder, el segundo viene junto
con el primero. Los bajaremos en código fuente y compilaremos.
Si bien ambos pueden encontrarse precompilados, la compilación
es recomendable pues Mplayer soporta capacidades basadas en librerías
que no suelen estar instaladas y que el paquete de código fuente
no trae. Estas librerías permiten añadir soporte para
ciertos codecs (Divx4Linux, Xvid, etc.), entrada/salida a TV (video4linux,
rte, etc.), control remoto (Lirc), acceso a DVDs (deCSS libs), acceso
a hardware DV(libDV), etc.
Para conseguir este soporte debemos bajar e instalar las librerías
y sus correspondientes paquetes `devel` . La mayoría
de ellas no son incluídas en los CDs de ninguna distribución
por cuestiones legales y/o de licencia. Tal vez alguna ya lo
esté, así que utiliza tu buscador de paquetes (Apt,
Apt4rpm, Rpmdrake, Yast, etc.), a discreción
antes de lanzarte a bajar megabytes de Internet.
También usaremos el programa Transcode, que es un conjunto de herramientas
que permiten encodear desde ciertos formatos a otros como por ej.
desde DVD a AVI o (S)VCD.
Otros programas a usar: vobcopy (permite rippear DVDs a disco), Dvdrip
(front-end gráfico de Transcode), LAME (permite encodear audio
mp3, lo usaremos en forma de librería)
Bajar fuentes de Mplayer aquí.
5. Librerías
necesarias:
La experiencia de este documento está basada en Mandrake 8.2, pero
los usuarios de otras distribuciones basadas en RPM no deberían
tener problemas en usar los mismos paquetes teniendo en cuenta que
las dependencias (en cuanto a Glibc, libstdc++, etc), son similares
a las de un Red Hat 7.3 / SuSE 8.0. Para los debianitas, seguramente
encontrarán bastantes repositorios de \'debs\' con las mismas librerías
que usaremos, solo busquen en \'unstable\'.
Antes insisto: cuando hablo de instalar una librería/programa
me refiero a instalar su paquete principal \'nombre.rpm\' y su paquete
de desarrollo \'nombre-devel.rpm\'
El sitio de download es Penguin Liberation
Front, es compatible con urpmi y también permite acceder
directamente a los archivos, solo elijan la categoría \'Mandrake
8.2\' y no Cooker (pues tendrían problemas con dependencias),
y accederan a una lista de paquetes similar a esta:
perl-Event-0.86-1mdk.i586.rpm*
Video-DVDRip-0.45-0.04.1plf.i586.rpm*
transcode-0.6.0-4plf.i586.rpm*
vobcopy-0.4.3-1plf.i586.rpm*
divx4linux-20020418-1plf.i586.rpm*
libdivxdecore0-20020418-1plf.i586.rpm*
libdivxdecore0-devel-20020418-1plf.i586.rpm*
libdivxencore0-20020418-1plf.i586.rpm*
libdivxencore0-devel-20020418-1plf.i586.rpm*
faac-20011026-1plf.i586.rpm*
faad2-20020126-2plf.i586.rpm*
libdv2-0.98-1mdk.i586.rpm*
libdv2-apps-0.98-1mdk.i586.rpm*
libdv2-devel-0.98-1mdk.i586.rpm*
libdv-compat1-0.9-4mdk.i586.rpm*
libdv-compat1-devel-0.9-4mdk.i586.rpm*
libdv-compat-apps-0.9-4mdk.i586.rpm*
libdvdcss1-1.0.0-3plf.i586.rpm*
libdvdcss1-devel-1.0.0-3plf.i586.rpm*
libdvdcss2-1.2.2-1plf.i586.rpm*
libdvdcss2-devel-1.2.2-1plf.i586.rpm*
libdvdnav1-0.1.3-1mdk.i586.rpm*
libdvdnav1-devel-0.1.3-1mdk.i586.rpm*
libdvdread2-0.9.3-1mdk.i586.rpm*
libdvdread2-devel-0.9.3-1mdk.i586.rpm*
libfaac0-20011026-1plf.i586.rpm*
libfaac0-devel-20011026-1plf.i586.rpm*
libfaad2_0-20020126-2plf.i586.rpm*
libfaad2_0-devel-20020126-2plf.i586.rpm*
libfame0.8-0.8.10-2plf.i586.rpm*
libfame0.8-devel-0.8.10-2plf.i586.rpm*
libggi-2.0.1-4mdk.i586.rpm*
libggi2-2.0.1-4mdk.i586.rpm*
libggi2-devel-2.0.1-4mdk.i586.rpm*
libgii0-0.8.1-3mdk.i586.rpm*
libgii-0.8.1-3mdk.i586.rpm*
libgii0-devel-0.8.1-3mdk.i586.rpm*
liblirc0-0.6.5-2mdk.i586.rpm*
liblirc0-devel-0.6.5-2mdk.i586.rpm*
mad-0.14.2b-2mdk.i586.rpm*
libmad0-0.14.2b-2mdk.i586.rpm*
libmad0-devel-0.14.2b-2mdk.i586.rpm*
libmp3lame0-3.93-0.20020827.1plf.i586.rpm*
libmp3lame0-devel-3.93-0.20020827.1plf.i586.rpm*
libmp4v2_0-0.9.2.8-3plf.i586.rpm*
libmp4v2_0-devel-0.9.2.8-3plf.i586.rpm*
libmpeg3_1-1.5-1plf.i586.rpm*
libmpeg3_1-devel-1.5-1plf.i586.rpm*
libsndfile0-0.0.28-1mdk.i586.rpm*
libsndfile0-devel-0.0.28-1mdk.i586.rpm*
openquicktime-1.0-5plf.i586.rpm*
openquicktime-apps-1.0-5plf.i586.rpm*
openquicktime-devel-1.0-5plf.i586.rpm*
rte-0.4-1plf.i586.rpm*
xvid-20020906-1plf.i586.rpm*
xvid-devel-20020906-1plf.i586.rpm*
xvid-divx-devel-20020906-1plf.i586.rpm*
win32-codecs-1.0-1plf.i586.rpm*
Hay muchas otras librerías y utilidades relacionadas
con audio/video en el directorio, pero usaré esta lista breve
como ejemplo. De aquí puedes bajar las librerías necesarias,
también deberías bajar las demás utilidades (vobcopy,
dvdrip, lame).
Tanto para MPlayer/Mencoder como Dvdrip/Transcode hay dependencias \'cruzadas\',
es decir que los programas necesitarán las mismas librerías
para funcionar.
5.1 Librerías
para Mplayer/Mencoder
De toda la lista solo son indispensables unas cuantas de ellas
:
- todas las que tengan \'dvd\' en el nombre - (acceso a DVDs)
- libmp3lame - (encodding de audio en mp3)
- divx4linux - (encodding/decodding divx)
- xvid - (encodding/decodding divx)
Sobre los 2 últimos, solo puedes compilar soporte en Mplayer
para una a la vez, Divx4linux o xvid.
Con respecto a cual conviene incluir o no: Xvid tiene mejores capacidades
para compresión que Divx4linux, pero tiene menos soporte para
el playing de videos; Divx4linux a su vez permite buenas opciones de
compresión y soporta perfectamente el playing de casi cualquier
video (aunque no hay mejor para el playing que Libavcodec).
Las demás darían soporte a funciones como por ejemplo:
- acceso a contenido \'DV\' (todas las librerías con \'dv\' en el
nombre), formato típico de cámaras \'Firewire\' o \'I-link\'
(IEEE 1394)
- faac, faad codifican y descodifican audio Mpeg 4
- libfame encodding mpeg,
- libggi 1 y 2 soportan framebuffer
- libmad, libmpeg3 decodding mpeg3 (mp3), etc.
Solo tienen que ir viendo la descripción de cada uno (por ej.),
con F3 en MC (Midnight Commander).
Como recomendación adicional, para mejorar el playing de video
en MPlayer, instala las libSDL (requiere alsa y alsa-devel),
y Freetype, con la primera obtendrás el mejor método
de escalado por software para tus videos (que suavizará apreciablemente
el pixelado al ver videos de baja resolución, por ej. 400x166),
y con el segundo añadirás soporte de antialiasing para
las fuentes de los subtítulos. Plus extra: con libSDL los subtítulos
se ven en la barra negra debajo de la imagen (si el video está
en formato \'ancho\' 16:9 como los de DVD).
También es deseable instalar los codecs win32, para tener
soporte para wma 8/9 (audio) y wmv 8/9 (video), así como otros
soportados por estas librerías.
Luego de instalar las indispensables y las opcionales estaremos en condiciones
de compilar Mplayer/Mencoder.
5.2 Librerías
para Dvdrip/Transcode
Dvdrip requiere que Transcode esté instalado, así como
la librería Perl-Event. Transcode utiliza la librería
libavifile, por lo que tendremos que instalarla.
Tener en cuenta que podemos tener instaladas varias versiones de libavifile
al mismo tiempo. Este aviso es por si Transcode está compilado
contra una librería más vieja/nueva que alguna otra que
ya tengamos instalada (si tenemos instalado Avifile seguro que ya hay
una).
5.3 Librerías
en source
Notarán que en la lista de directorios con rpms, está
el \'scr\', ahí encontrarán los paquetes de fuentes de todas
las librerías y utilidades, sería interesante para lograr
mayor rendimiento aún bajar y recompilar los de aquellos que
usaremos (recordar que los binarios están por precompilados
para i586).
6. Algunas
palabras acerca de los codecs:
En un mundo ideal habría solo un codec, el mejor. Pero este mundo
está lejos del ideal. El resultado es que hay un amplio rango
de codecs audio y video de donde elegir.
Primero explicaré los diferente tipos de codecs:
- Nativos: son binarios normales
de Linux (muchos son objetos, libNOMBREDELCODEC.so), están
soportados por defecto. - Codecs Windows: son librerías
dinámicas de Windows, originales o modificadas (DLLs, AX y parecidas),
Estos codecs no funcionan nativamente en Linux y necesitan una librería
especial llamada avifile. Hace un tiempo atrás esta
era la única manera de ver AVIs en Linux.
Ahora muchos codecs vienen en formato nativo para Linux como
Divx4linux, Xvid y otros. Aquí hay una lista de codecs soportados:
- MPEG4 es un estándar oficial de compresión
de video. No hay un codec cuyo nombre sea solo MPEG4. Si estás
hablando acerca de MPEG4 no hablas de ningún codec en especial,
sino acerca de un conjunto de técnicas para comprimir video. MPEG4
compatible (compliant), significa que un codec produce archivos
que pueden ser decodificados por otros codecs MPEG4 compatibles. - Divx ;-) es el codec
\'original\' MPEG4 de Microsoft hackeado, que inició toda esta
\'movida\'. No soporta todas las características MPEG4 como b-frames
o compensación de movimiento global (global movement compensation
- GMC). Algunos todavía lo usan en Windows junto con la excelente
herramienta Nandub. Está en desuso en Linux porque
hay codecs que proveen mejor calidad. Viene en unas dlls (divx.dll y otras),
y requiere avifile. Divx 4 y 5 son sus sucesores oficiales.
Divx 5 reemplaza a Divx 4, por eso no puedes tenerlos instalados a ambos
al mismo tiempo (bien, técnicamente podrías, pero no deberías
por razones obvias). Hay librerías nativas de Linux llamadas
libdivxdecore.soylibdivxencore.so, son
de código cerrado. Para Windows hay diferentes versiones disponibles
(libre y paga), para Linux solo está disponible la versión
libre, por lo que no contamos con las excelentes opciones que la
versión comercial soporta como b-framas, GMC o \'quarter PEL\'. La
versión libre puede usarse para ver videos creados con la
versión comercial. DivxNetworks está pensando proveer una
solución comercial para Linux pero no esperes nada disponible a
corto plazo. - Xvid (Divx
leído al revés), es una implementación MPEG4
de código abierto, que es realmente buena en compresión
y calidad de imagen. El soporte de características como b-frames,
GMC, está en progreso o ya se implementó. - libavcodec o lavc es otra implementación
MPEG4 de código abierto que es superior en rendimiento y calidad
a Divx5 e incluso a Xvid. Soporta b-frames, y es parte del proyecto
ffmpeg. - Por supuesto hay codecs MPEG1/2 compatibles, necesarios
para ver VCDs, SVCDs o DVDs. - Hay otros codecs desfasados (\'viejos\'), como
Intel Indeo 5 y versiones crackeadas de codecs MPEG4 como AngelPotion.
También hay otros que están en desarrollo (VP4), y no
tienen nivel \'de producción\' aún.
Nos enfocaremos en 3 codecs: Xvid, Lavc, y Divx4. La razón
es que los dos primeros proveen excelente calidad, son rápidos
para comprimir y solo necesitas un codec MPEG4 compatible (como
ffdshow, Divx5, etc. ), para el playing en sistemas Windows. El playing
en Linux no es ningún problema pues MPlayer, Xine y otros felizmente
ejecutan videos encodeados con Divx4/5, Xvid y Lavc.
Nota: Divx4 no quiere decir \'versión 4\' sino es la contracción
de Divx4linux nombre oficial de la implementación nativa \'comercial\'
de código cerrado para Linux. Actualmente Divx4linux soporta la ejecución
de películas/videos comprimidos con Divx 5.02 para Windows.
La compresión con Divx4 será explicada pues
si bien el codec no está a la \'altura\' de los otros dos, es
muy usado para comprimir bajo Linux, pues es el más frecuentemente
se encuentra instalado en el sistema. También podrás
comprimir y comparar por tí mismo.
De nuevo, otra lista, esta es de codecs de audio:
- MP3 es el nombre corto de MPEG1 layer 3 y es
un estándar oficial de compresión de audio. Si hablás
de MP3 estás hablando de una técnica de compresión,
no de un codec en particular. Hay más codecs MP3 que no los
podría nombrar en un solo día. - lame es un acrónimo para \'Lame Ain\'t an
MP3 Encoder\' (\'Lame no es un encoder MP3\', aunque de hecho lo es ;-),
provee un encoder que produce archivos MP3 de alta calidad, Mencoder
y Transcode lo usan para comprimir audio.
- AC3 es otro estándar de compresión
de audio. Casi todos los DVDs contienen audio encodeado con AC3. Actualemente
hay decoders para Linux y Windows que funcionan con sonido AC3 dentro
de los AVIs. La ventaja es que no es necesaria la recompresión
(que implica pérdida de calidad), y que el sonido multi-channel
(Dolby Surround o mejor), será preservado. La desventaja es que
el AC3 ocupa más espacio que el MP3. - OGG es un nuevo codec compresión de audio
de código abierto. Está disponible para Linux y Windows.
Sus ventajas son mejor calidad de audio y ratio de compresión
que MP3 y soporte de audio multi-channel (como el AC3). Hay poca experiencia
en general sobre el uso de este codec en los AVIs, pero muchos programas
encoders en Linux y Windows lo soportan (como Mencoder, Nandub, etc.).
7. Compilando
Mplayer/Mencoder
Es recomendable que leas la documentación (el FAQ especialmente),
que trae el paquete de fuentes, pues es más extensa y detallada
que cualquier artículo que puedas encontrar (este incluído).
Si aún quieres referencias, un articulo (en español), en
este sitio explica como compilar Mplayer, el otro recurso es Google
:-). Me limitaré a dar algunas recomendaciones y consejos:
El configure
Haz un \'./configure --help\' para enterarte de todas las opciones
disponibles (en cuanto a librerías que soporta el programa),
y cuales son autodetectadas (casi todas), y cuales no.
Checkinstall
Para compilar podrías usar el típico trío
\'configure-make-make install\', recomiendo en cambio que utilices el
trío \'configure-make-checkinstall\'. Puedes bajar Checkinstall
de aquí (Mandrake 8.2, Red Hat 7.3, SuSE 8.0 y Debian Woody lo
incluyen). Este pequeño script te permite instalar al igual que
el \'make install\' solo que crea un paquete (rpm, deb o tar.gz) y lo registra
en la base de programas instalados correspondiente (según el
tipo de paquete eligido). Esto te permitirá borrar el programa
fácilmente de tu sistema si fuera necesario (con \'rpm -e nombre-del-paquete\'
por ej.), y dejará disponible el paquete para poder instalarlo
otra vez.
Freetype
No es autodetectada debes habilitarla (teniendo instalado el
soporte), con \'--enable-freetype\'
SDL no es habilitado/detectado
(pero está bien instalado junto con su paquete \'devel\'),
Te falta instalar alsa y/o alsa-devel. Hasta la version Mplayer-0.90-pre8
alsa2 no estaba soportado (necesitarás bajar alsa o alsa1, si
no la tiene tu distro, fijáte en Rpmfind ).
Libavc no es habilitado/detectado
Seguramente bajaste la versión el \'last time\' tarball
del CVS que no trae el código Libavc. Solo las versiones \'oficiales\'
traen el Libavc. Puedes bajarte el último Libavc de ffmpeg.sf.net
y añadirlo en el directorio correspondiente del código
fuente de Mplayer. Tambien podrías usar el de la última
versión \'oficial\'. En última instancia solo baja la release
\'oficial\' y tendrás el soporte Libavc de seguro.
Divx4linux junto a Xvid
Compilar el soporte para los 2 al mismo tiempo no es posible, pero
sí puedes tener instalados los dos y compilar el soporte para
uno u otro. El soporte por defecto es para Divx4linux (si están
instalados los 2, se compila soporte para este). Puedes deshabilitarlo
con \'--disable-divx4linux\' o si lo quieres (solo para asegurarte),
\'--disable-xvid\'.
No se compila la interfaz gráfica
Hay que habilitarla explícitamente con \'--enable-gui\'.
\'XXX no es habilitado y está bien instalado\'
En general si algo está bien instalado y no es habilitado
por el configure, es que está desabilitado por defecto. Mira
de nuevo el primer consejo.
Deshabilita el \'runtime cpu detection\' (detection de cpu en tiempo
de ejecución)
Esto está muy recomendado en la propia documentación
de Mplayer (leéla y averigua por qué). Aumenta el rendimiento.
Hazlo con \'--disable-runtime-cpudetection\'
Finalmente, para compilar usaría por ejemplo:
./configure --disable-runtime-cpudetection
--enable-gui --enable-freetype --language=es
make
checkinstall (u opcionalmente el clásico make install)
8. Preliminares:
De aquí en adelante estoy asumiendo que:
- La lectora DVD está en /mnt/dvd y que en /etc/fstab
hay una entrada para /mnt/dvd - Tienes espacio libre en /video
- En tu disco DVD, la película que quieres rippear
está en \'title 1\'. Ten en cuenta que podría estar en \'2\'
Recuerda substituir estos path con los que se apliquen a tu sistema.
Hay muchas maneras de rippear un DVD a disco, no tienes que hacerlo
varias veces, claro ;-)
8.1 Código
de región del DVD
Antes de hacer cualquier cosa piensa en el código de
región. Todas (o casi), las lectoras DVD tienen el Modo
2 RPC de protección, lo que quiere decir que solo puedes cambiar
tu código de región 5 veces antes de que quede
fijo en el último seleccionado. Puedes obtener información
acerca de cómo remover el código de región
de tu lectora DVD en Digital Digest. Menciono esto pues todo el procedimiento
descrito aquí se basa en que puedes acceder correctamente a tu
DVD (o sea, que el disco y la lectora tienen el mismo código),
pues muchos errores cripticos durante el rippeo vienen de esta cuestión.
Como aclaración, la mayoría de los DVD que se
pueden conseguir al alquilar o comprar DVDs en comercios de buena reputación,
serán casi con seguridad del mismo código de región
de tu lectora (o por lo menos solo tendrás que cambiar una vez
de código). Aún así infórmate sobre esto.
A la acción, testea el DVD, lanza Mplayer con mplayer
-dvd 1 (que tal?), luego ciérralo.
9. Rippeando el DVD
Esta parte es fácil. Necesitas espacio libre (mucho), entre
8 y 10 GB (según lo que pesen los .vob)
9.1 Con Vobcopy
Ok, ve a una línea de comando, monta la lectora DVD
(mount /mnt/dvd), y baja esos .vob al disco con: vobcopy
-i /video.
Esto tomará algo de tiempo, (20 min, 1/2 hora, más
o menos), recuerda que los archivos serán nombrados con el título
del DVD por ej.: ALLY_MCBEAL_DISC21-1.vob, ALLY_MCBEAL_DISC21-2.vob
etc.
Robos, el creador de Vobcopy cuenta que el programa parece tener
problemas con películas que traen múltiples ángulos
(escenas duplicadas), como The Matrix o The Rock (esto es aplicable
hasta la versión 0.4.3).
Como de costumbre, Vobcopy tiene un manual (man vobcopy),
si algo no anduvo bien, ahí puede estar la respuesta, también
prueba \'vobcopy --help\'.
9.2 Con
Dvdrip
Inicia el programa con \'dvdrip\', verás la ventana principal,
elije Edit / Preferences y verás la ventana de Preferencias, aquí carga los path
de tu sistema. El primero es el de la lectora DVD (device),
y suele ser un symlink como /dev/dvd que apunta al verdadero disposito
(en /dev/hdc, por ej.). Acepta y cierra la ventana.
Inicia un nuevo \'proyecto\' (File / New Project); iniciará
mostrando la ventana de almacenamiento (storage
tab), y tienes que cargar tus path. Nota como los otros
nombres de los campos cambian cuando cambias el título de proyecto.
Cambia al tab Rip Title
y presiona el botón Read DVD Table of Contens, luego de
uno o dos segundos la lista de abajo será llenada con los títulos
(titles), que contiene el DVD. Selecciona el/los que te interese
rippear (con ctrl puedes seleccionar varios), elige el lenguaje (Audio)
y el ángulo, deja Specify Chapter Mode en No
(\'Especificar Modo de Capítulo: No\'), y el último paso:
presiona Rip selected Title(s)/Chapter(s). Ahora sé
paciente y ve hacer algo interesante por un rato.
10. Transcodeando
el DVD/Video a un AVI
Ahora vamos a encodear nuestro video/DVD a un archivo AVI, recordar
que en este paso se busca un balance entre la calidad de imagen y audio
y el tamaño (650mb, 700mb, 1 cd, 2cds, etc.). Otra cuestión
importante es la resolución de la imagen, si bien el ideal de
comprimir en la misma resolución en que viene el video, hay casos
como:
- si la película dura mucho tiempo y no nos interesa
tanto y no queremos \'máxima\' calidad, un buen formato sería
400x166, con un audio mp3 vbr a 128 kbs en 44 khz (si la vemos con Mplayer
con \'-vop scale=640:305 -sdl\' no notaremos gran pérdida
de calidad). - Si queremos la misma película en mayor resolución,
probablemente acabe ocupando 2 cds. - Recordar que en máquinas no tan nuevas una resolución
como ésta es más que necesaria, así un PII a 300mhz
con 128 RAM o un K6II a 500 con 128 RAM podrían ejecutar con comodidad
este video. - Como tip final, la máxima calidad y resolución
posible serían (en teoría), alcanzables ocupando como máximo
2 cds, aunque en la Red se puede ver que muchos ya comprimen películas
hasta en 3 cds.
La cuestión del video rate o vrate es muy importante en
este caso, a mayor vrate mejor calidad de película y viceversa.
Hace un breve tiempo atrás calcular el tamaño en base al
vrate era una especie \'ciencia oculta\' o por lo menos empírica (basada
en la experiencia). Luego de esto apareció en Windows un programa,
Nandub que utilizaba el codec Divx ;-) 3.11 y permitía con
bastante exactitud determinar el tamaño del video. Los codecs Divx4Linux,
Xvid y Libavc permiten un cálculo bastante más exacto, en
los dos primeros casos habrá que hacerlo a mano (no se preocupen
unas cuantas personas ya crearon programas y scripts que lo hacen), y en
el segundo el codec mismo nos permite, directamente como parte de los seteos
establecer el tamaño deseado, o por lo menos nos sugiere el vrate
apropiado para obtener el tamaño de archivo deseado.
10.1 Pros
y contras de Mencoder y Transcode
(al 4 de abril de 2002, Mplayer 0.90-pre8)
- Mencoder no puede ajustar retrasos de audio. Si el audio
y el video no están sincronizados cuando veas la película
con Mplayer tendrías que usar Transcode. - Transcode no puede manejar VBR/ABR, solo mp3 CBR, si necesitas
mp3 VBR, tendrás que \'pegarlo\' luego con Mencoder. Ten en cuenta
que las herramientas que vienen con Transcode NO trabajan con AVIs que
contengan mp3 VBR, entonces no podrás arreglar problemas de sincronía
audio/video (con la utilidad avisync de Transcode), con AVIs con
mp3 VBR (como los que puede generar Mencoder). Sí
se puede crear AVIs con mp3 CBR con Mencoder (lee la documentación). - Pero...según la documentación de Mplayer,
el archivo encoding.html del directorio DOC del paquete de fuentes,
traduzco textualmente: \'el audio mp3 VBR no siempre se ejecuta
bien en players de Windows. Por otra parte, actualmente, el encoding
CBR de Mencoder no funciona para nada en players win32\'. Lo que
nos lleva a la experiencia: los AVIs con mp3 CBR generados por
cualquier programa win32 o linux (VirtualDub, Nandub, Mencoder, etc.),
casi siempre dan problemas (de sincronía audio/video),
en players win32; por otra parte los AVIs con mp3 VBR casi nunca
dan problemas en players win32, esto es mi experiencia personal y
la recogida de \'data\' de otra gente, no es \'ciencia exacta\'. - Los AVIs con mp3 CBR/VBR/ABR, encodeados en win32 o Linux
practicamente nunca dan problemas de sincronía audio/video
al ser ejecutados en Mplayer. Incluso si se utiliza escalado por software
(-vop scale) junto a \'-vo sdl\'. - Mencoder no tiene una interfaz gráfica completa por
el momento (pero Kmencoder
ya podría ser testeado), lo que hace el cropping/ resizing algo
\'doloroso\'. Pero no te lo tomes tan a pecho, pues brinda claras y efectiva
funciones para hacerlo desde la línea de comando (pronto no extrañarás
estar \'jugando con el mouse\' para lograr el cropping perfecto de tu
película favorita).
Lo que realmente se extraña es una utilidad gráfica
para recomprimir video (al estilo VirtualDub en win32), aunque
Avidemux está avanzando a
buen ritmo y ya es casi una buena opción. O tal vez Dvdrip podría
incorporar la posibilidad de cargar AVIs...
10.2 Video entrelazado
La imagen que uno ve en TV no tiene 25 frames por segundo, sino 50
half-frames por seg. (half=medio). Un frame contiene las líneas
pares y otro las impares, así consigues los 25 fps (frames por
seg.). El problema es que los half-frames son tomados en diferentes
momentos y si tienes un rápido movimiento horizontal verás
como un objeto está en una posición para las líneas
pares y en otra para las impares. No quieres ver esto en tu video luego,
así que eliminaremos el efecto con filtros apropiados (de-interlacing
o desentralazado), si es necesario. Este
es un ejemplo de video entrelazado y éste
es el mismo video desentrelazado.
10.3 Aspect Ratios
Los DVD siempre son encodeados a 720x576 (5:4), aunque la película
sea escalada al ejecutar. Los formatos de video comunes son 4:3 para
TV, 16:9 para \'Cine\' normal y 2,35:1 para \'Cinemascope\'.
Esta es una lista posibles \'aspect ratios\' para darle a un video:
- películas en 4:3 llenan toda la imagen (todo el monitor
o TV), sin \'letterboxing\' (las franjas negras que vemos al ejecutar directo
del DVD o en formato 16:9). - películas en 16:9 llenan toda la imagen (sin letterboxing),
escala de 5:4 a 16:9 - películas en 16:9 con letterboxing, escala de 5:4
y \'recorta\' las barras negras - películas 2.35 con letterboxing, escala de 5:4 a
16:9 y \'recorta\' las barras negras
No te preocupes si no entiendes nada, el clipping (recorte) y
escalado en dvdrip es intuitivo y aún para Mencoder con un poco
de lectura y prueba/error rápidamente recortas y escalas apropiadamente.
11. Usando Dvdrip
Es por lejos la manera más fácil de obtener AVIs,
está basado en Transcode. Ahora ejecuta el programa y crea un
proyecto nuevo.
11.1 Clip y Zoom
- cropping=clipping=recorte
- zoom se refiere a escalar (= a reescalar), la imagen.
Ve a ese Tab, ahí es
donde setearás todos los parámetros de tamaño de
imagen y cropping. Primero consigue una imagen para trabajar ingresando
un número de frame (como 200) en Grab Preview Frame
y presiona Grab Frame from ripped VOB, luego de unos segundos
las tres vistas de abajo muestran el frame que pediste.
Transcode usa tres pasos para llevar la imagen a su tamaño
final, primero toma la imagen original (sin reescalar), luego la reescala
y por último la recorta. Cada uno de estos pasos puede omitirse
seleccionando 0 (cero) para el clipping y el tamaño original para
el ancho y alto (width y height) para el reescalado. Cada cuadro muestra
el resultado de cada paso, si quieres ver que tan grandes son las imágenes
en realidad, solo clickea sobre ellas y una ventana popup te mostrará
la imagen con el resultado.
Si te fijas más abajo verás que Dvdrip ofrece un amplio
rango de preseteos para trabajar. Simplemente selecciona uno de ellos como
punto de partida, luego si quieres puedes manejar manualmente cada variable.
Todos los preseteos son llamados \'Autoadjust...\' Intenta adivinar las
partes que vas a recortar (clip), luego presiona Apply Preset Values
y ahora ajusta los valores hasta que estés satisfecho.
Las opciones big frame, frame y smal frame se refieren
al tamaño final de imagen a lograr; big mantiene casi
completa la resolución DVD, medium es algo entre 500 y
600 para el ancho y small es aproximadamente 350.
Un comentario: Use fast resizing tiene un gran impacto
sobre el procesamiento de la imagen pero requiere que en ancho y alto
usado sea divible por 32, no te preocupes, Dvdrip te dirá si tu
no puedes usar fast resizing. Nota además que mientras que es posible
agrandar la imagen es muy poco aconsejable. Hay muchos puntos en contra:
el encoder necesita muchos más bits para lograr la misma calidad
que obtendrías al encodear a un tamaño menor y luego escalarla
al ejecutarla, también podrías obtener imágenes distorsionadas;
en fin siempre escala para abajo (imagen más chica que
el original).
11.2 Eligiendo parámetros de encodding
Ahora pasamos al Tab Transcode.
Primero decidimos acerca del codec de video a usar. Si tienes instalado
Divx 5 for Linux puedes usarlo, pero se recomienda usar Xvid (si bajaste
Xvid del CVS la opción se llama xvidcvs); y si Transcode
reporta luego extraños errores, usa Xvid. Recuerda que el soporte
para Libavcodec se está extendiendo para players y encoders, no sería
de extrañar que en versiones recientes de Transcode/Dvdrip esté
disponible, si lo está pruébalo.
Te acordás del video entrelazado? Probá ver la película
con el player y fijáte si lo es o no. Si no lo es, simplemente
deja deinterlacing y antialias desactivados. Si lo es selecciona
3 - Zoom to Full Frame. Este es el \'desentrelazador\' más
lento, pero el que mejor se ve.
Otro filtro para desentrelazar
es un plugin externo (que se instala junto con Transcode). Mira a la derecha
abajo, hay una línea de entrada Transcode Options, es para
pasarle parámetros a Transcode \'a mano\'. Podemos usarla para el
desentrelazado (entre muchas otras cosas), hay uno en particular, más
rápido que el anterior, si lo usas pon deinterlace en off
e ingresa \'-J dilyuvmmx/\' en la entrada de línea.
Dvdrip intenta autodectar el framerate, si falla puedes corregirlo aquí.
Use YUV internal debería quedar en yes a menos
que el codec de video no soporte modo YUV. Xvid lo soporta. Dejarlo activado
da un buen aumento de velocidad de compresión. Divx multipass
debería quedar en yes, aunque solo podrías querer
un \'preview\' de como quedará la película. Para el trabajo
de compresión completo siempre elige el encoding de dos pasadas (2
pass encodding), llamado Divx multipass (funciona muy bien con
Xvid).
Las opciones de audio deberían ser \'autoexplicativas\'. Puedes
eligir entre reencodear el audio a MP3 usando un bitrate a elegir o
usar el sonido original AC3 sin reencodear. Recuerda que el AC3 provee
sonido surround multi-channel y otras ventajas pero es más grande
que el mp3. Si usas mp3 setea Mp3 Quality en 2. De acuerdo con la
documentación de Lame (el que es usado por Dvdrip para la compresión
de audio), seteo como 1,0, \'best but slower\' son mucho más lentos
y no producen audio de tan alta calidad. Volume rescale permite
normalizar el audio (no requiere de ningun programa externo), Dvd revisa
el sonido y prevee un valor de reescalado.
A la derecha arriba está la opción del bitrate, puedes
elegir el tamaño del rippeado en MB y para que cantidad de CDs
estas comprimiendo. Manipulando Target Size o Video Bitrate
también puedes, Dvdrip actualiza automáticamente los valores
calculados por lo que encontrar el bitrate óptimo es sencillo.
11.3 Generando
una vista previa
Muchas veces es bueno generar una vista previa, puedes hacerlo dando
un \'rango de frames\' , Frames Range. Podrías encodear 30
segundos (750 frames), a 25 fps (nro. de segundos * fps = nro. de frames
a encodear), y comenzar el preview en algún lugar de la película
(desde 200, 300 frames o más). También debería darle
a Transcode un alto valor de \'nice\' (prioridad, ver \'man nice\'), lo que
resultará en una baja prioridad así usará solo tiempo
libre de proceso (idle time), si quieres que la preview sea más
rápida todavía, desactiva Divx multipass (recuerda
activarlo luego).
Cuando estés listo presiona Transcode, luego de un
par de minutos terminará, luego puedes ver la preview (en Mplayer
por ej.), y ver si (por ej.) el desentralazado funciona como se espera
y checkear si hay sincronía audio/video.
11.4 Previniendo
desincronización audio/video
Si el audio y el video no están sincronizados en la preview
(o cuando ves el DVD), puedes darle a Transcode un seteo de \'frame offset\'
para sincronizarlos. Hazlo pasando el parámetro \'-D nr\' en
Transcode options en el tab Transcode. nr es el nro. de
frames que se atrasará al audio, este nro. puede ser negativo. Un
frame dura 40 milisegundos a 25 fps, en general la longitud de frame es
1000/fps en milisegundos. Crea un nuevo preview y checkea el resultado; prueba
hasta estar satisfecho.
11.5 Terminando
el encodeado
Cuando la preview esté bien inicia el proceso final. Asegúrate
de que Divx multipass esta activado, luego clickea en Transcode
+ Split si quieres que el archivo sea dividido automáticamente
(eso es según el bitrate seleccionado, casi siempre si elegiste
encodear para más de un CD). Ahora toma un buen descanso (varias
horas).
12. Para
usuarios avanzados de Transcode : argumentos de línea de comando
Aquí se explican las opciones de línea de comando
usadas por Dvdrip, no es crucial para comprimir películas, así
que podrías saltearlo. Se provee para aquellos que quieran ir
un poco más allá en el uso de Dvdrip y Transcode.
En Dvdrip presiona CTRL+t y verás que comandos ejecuta Dvdrip,
por ahora concentrémonos en el último grupo de comandos,
Transcode command, aquí hay un ejemplo (sin los molestos
mkdir y cd que también aparecen):
Veamos que sucede con los parámetros
de la primera línea:
13. Usando Mencoder
Este programa no tiene interfaz gráfica por el momento, pero
puedes checkear el estado de Kmencoder (UI no oficial
para KDE). Ahora mostramos algunas maneras de comprimir audio/video
a AVIs, pero no significa que sea la única. Tener en cuenta que
Mencoder soporta muchos codecs de audio y video diferentes, por ej. podríamos
encodear el audio en formato ogg en vez de mp3, bueno se ve la amplitud
de posibilidades (vas a ver más todavía si lees la documentación).
13.1 2-pass
encoding (el método de las dos pasadas):
El nombre viene del hecho que este método encodea el archivo (el
AVI), dos veces. La primera encodeada (primera pasada), creando algunos
archivos temporales (*.log), de unos cuantos megabytes (no los borres hasta
terminar, pero puedes borrar el AVI). En la segunda pasada usa los datos
de bitrate guardados en los archivos temporales .log. El resultado es un
archivo final AVI que tiene mucha mejor calidad de imagen.
Ciertamente el proceso es técnicamente más complejo que
esta explicación, deberías buscar \'data\' adicional en la Red.
13.2 3-pass
encoding (el método de las 3 pasadas):
Este es un extensión del método anterior, en la que el
audio se encodea en una pasada separada (y luego se hacen 2 pasadas para
encodear el video). Este método permite la estimación del video
rate sugerido para que el archivo final entre en un CD (sugiere
para 650, 700 y (?) 800 mb). Como ventaja extra: el audio es encodeado solo
una vez, no como el en el de 2 pasadas.
13.2.1 Como
verás hay varios métodos con el mismo nombre.
(se complicó un poco ;-)
Mencoder soporta 2 o 3 pasadas de forma externa, es decir pasándole
el argumento -pass 1 y -pass 2
</code> (para
indicar <i>pasadas)</i>, y siguiendo el procedimiento correspondiente.
<br>
<br>
El codec Libavc específicamente soporta 2 y 3 pasadas de <i>internamente</i>,
es decir le indicamos la pasada como parte de las opciones propias del codec
y hay que elegirlo <i>expresamente</i> por ejemplo: <br>
<code>-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:<i>vpass=1</i>.
Libavc tiene la ventaja de una (sumamente), mejor predectibilidad
en el video rate sugerido (en el método de las 3 pasadas),
que usando las pasadas de manera externa. Adicionalmente, Libavc
tambien puede usarse con 2/3 pasadas, marcando las pasadas
de manera externa (elegir uno O el otro).
En 3 pasadas, independientemente de que se use el método interno
de Libavc o el externo de Mencoder, al terminar el encodding del
audio, se recomienda el video rate para que \'entre\' en un CD.
13.3 \'Three
pass encodding\' (método de las tres pasadas) - Libavc y pasadas internas
Este método es en realidad una extensión del método
de las 2 pasadas (2 pass encoding). También, el audio es encodeado
solo una vez no como en el método de las 2 pasadas.
13.3.1 Encodeando
el audio
El primer paso es encodear solo el audio. Asegúrate
de saber que idioma quieres usar, para ello necesitas el id de audio (el
cual es 128 para el primer stream, 129 para el segundo, etc.), o el código
de país de dos letras (como en para inglés o de
para alemán, es para español).
Puedes encontrar el código corriendo el video en Mplayer en modo
\'verbose\': mplayer -dvd 1 -v . Esto mostrará muchas líneas
(en la consola), busca algo similar a:
[open] audio stream: 0 audio format: ac3 language: en aid:
128 [open] audio stream: 1 audio format: ac3 language: de
aid: 129 [open] audio stream: 2 audio format: ac3 language: es
aid: 130
Aquí hay 3 streams de audio: Inglés, Alemán y
Español con sus correspondientes IDs.
Ahora ejecuta Mencoder y encodea el audio:
nice -+19 cat /video/*vob
| nice-+19 mencoder -ovc frameno -o frameno.avi -oac mp3lame -lameopts
abr:br=128 -alang es Aquí hay una explicación de línea de comandos
de arriba:
nice -+19- Le da a MEncoder la prioridad
de proceso más baja para que no estorbe tus actividades normales.-ovc frameno- el codec de video actual esframeno
lo que significa que no hay datos de video actualmente en proceso.-
-o frameno.avi- Escribe la salida a
un archivo llamadoframeno.avi. El audio debe ser escrito
en un archivo con ese nombre para que Mencoder lo lea con ese mismo nombre
en el siguiente paso. -oac mp3lame- el codec de salida de audio es
la librería lame.-lameopts abr:br=128- son opciones de lame.
Produce audio ABR con un bitrate \'máximo\' de 128 kbits/s.-alang es- Usa la pista de sonido en español.
Una alternativa es usar-aid 130.
Espera un momento y tendrás tu audio. Mencoder incluso sugiere
el video bitrate:
Recommended video bitrate for 650MB CD: 1845
Recommended video bitrate for 700MB CD: 1992
Recommended video bitrate for 800MB CD: 2287
Como ves, estos valores son bastante altos, pero es porque el video
de ejemplo que estamos procesando (un episodio de Ally McBeal), dura solo
41 minutos (por lo que las sugerencias nos darían por resultado
un archivo de xxx mb, que ocupa un cd o más por solo 41 minutos de
video). Como queremos \'meter\' dos videos de 41 minutos en un cd, le damos
un bitrate de 1000.
13.3.2 Generando
un preview (primera pasada - first pass)
Generar el preview no es necesario para generar el AVI
final, pero es recomendable para ver como quedará la imagen
en el resultado final (y no tener que esperar varias horas y si luego resulta
no satisfactoria la calidad final, hacerlo todo de nuevo!!!).
Ahora es tiempo de decidir cual codec de video usar. Se asume que el
resultado final será un AVI. Mencoder soporta Divx 4 o 5, Lavc (o
Libavcodec), o Xvid. A pesar de que probablemente no hayas oído
acerca de Libavcodec, debes saber que es superior a Divx 4 o 5 y por lo
menos tan bueno como Xvid. Por esto solo se dará un ejemplo para
comprimir con él. Para ver el resultado final en Linux el Mplayer
es ideal y en Windows bastará tener instalado Divx 5 o ffdshow (este
último es la implementación del decoder Libavc para
win32).
Veamos una por una las opciones de la línea de comandos (los
que usaremos nosotros), de Mencoder:
-
-oac copy- Mencoder necesita información
del audio para la primera pasada para mantener la sincronización
audio/video. No debes usar-nosound(si
quieres detalles técnicos ve a la lista de correo de MPlayer
</code></li>
<li><code>-o /dev/null- La salida(output, el AVI), no
es necesaria en la primera pasada, así que la descartamos. -ovc lavc- aquí elegimos lavc
como el codec de video para la salida (output).-
-lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vqmin=2:vqmax=31:vpass=1
- libavcodec actualmente soporta un gran número
de codecs de video diferentes. Convcodec=mpeg4elegimos el
codec MPEG4 compatible.vbitrate=1000es el bitrate deseado.
vhq(very high quality - muy alta calidad) le dice
al encoder que \'gaste\' mucho tiempo en optimizar los resultados (es bastante
necesario) .vpass=1finalmente le dice al encoder que esta
es la primera pasada solamente. Usandovqminyvqmax
le decimos al codec cuanto debería comprimir el video como mínimo
y como máximo. Mantener de estos, los valores por defecto restringe
mucho el bitrate de salida (output), alcanzable, así que estas prevenido
para elegir un rango amplio. Ten en cuenta que el valor de este es cuestión
de probar cual queda mejor. -vop scale=640:480- escala la imagen (hacia
\'abajo\' - scale down), a 640 x 480 píxeles. Se lee en listas de
correo que un nuevo modificador añadido recientemente calcula el
alto y ancho o lo \'redondea\' para mantener el \'aspect ratio\'. Sería
algo como esto:-vop scale -xy 640.Ten en cuenta que
si bien es posible \'agrandar\' la imagen, no es recomendable pues el encoder
necesita muchos bits para alcanzar la misma calidad que obtendrías
al encodear una imagen más pequeña y escalarla al ejecutarla.
Incluso podrías obtener imágenes distorsionadas. Siempre
escala \'para abajo\'.- Si tu imagen está entrelazada (interlaced), puedes
desentrelazarla con-npp lb. - Solo queremos una preview así que le pasamos
posición de inico y duración del \'encodeado\':-ss 0:20
empieza a comprimir 20 segundos \'dentro\' de la película
-endpos 0:30le dice que comprima durante 30 segundos.
La línea completa quedaría así (recuerda
el nice para mejorar el rendimiento del programa):
nice -+19 mencoder -oac copy -o /dev/null -ovc lavc
-lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 -vop scale=640:480 -npp
lb -ss 0:20 -endpos 0:30 /space/first.vob 13.3.3 Generando
una preview (segunda pasada - second pass)
Para este paso mantendremos muchos de los comandos previos.
Por supuesto cambiaremos el vpass=1 a vpass=2
para decirle al encoder que esta es la segunda pasada. También guardaremos
la salida (output), y para ello reemplazaremos
-o /dev/null
con un nombre como -o mipelicula.avi. Aquí
está como quedaría la línea:
nice -+19 mencoder -oac copy -o mipelicula.avi -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=1000:vhq:vpass=2 -vop scale=640:480 -npp lb -ss
0:20 -endpos 0:30 /video/first.vob
Luego de esto Mencoder termina nuestra preview en unos momentos.
Ajustamos parámetros si es necesario y repetimos el procedimiento
hasta quedar satisfechos.
13.3.4 Generando
el archivo AVI final
Aquí verás las las líneas para las dos pasada
necesarias para generar el AVI final. Simplemente descartamos -ss
y -endpos. Desafortunadamente Mencoder no puede manejar múltiples
archivos de entrada (input files), y los .VOB a comprimir son varios. Para
hacerlo usaremos el comando cat.
</code><br>
<code> cat /video/*vob | nice -+19 mencoder -oac copy -o /dev/null
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31
-vop scale=640:480 -npp lb
cat /video/*vob | nice -+19 mencoder -oac copy -o mipelicula.avi
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31
-vop scale=640:480 -npp lb </code><br>
<br>
Al parecer <code>-ss no funciona con la variante
cat *vob
| mencoder... por ello para la preview especificamos un
solo .VOB
En esta pasada el archivo de audio frameno.avi que generamos
en el primer paso, será integrado automáticamente (sin
que tengamos que indicarlo), junto al video para formar el AVI final.
Ahora solo queda esperar un (buen), rato.
13.4 \'Two pass
encodding\' (método de las dos pasadas) - Libavc y pasadas internas
Como ves no difiere mucho del anterior, solo que ahora hacemos
el procedimiento en dos líneas de comandos, dando las opciones de
audio en ambos y por supuesto la salida (-o nombre.avi ), va en ambas
líneas.
</code><br>
<code>rm -f lavc_stats.txt (esto remueve el archivo que podría
venir de una sesión anterior)</code><br>
<code> cat /video/*vob | nice -+19 mencoder -oac (aquí-van-las-opciones-del-audio)
-o mipelicula.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31
-vop scale=640:480 -npp lb</code><br>
<code> cat /video/*vob | nice -+19 mencoder -oac (aquí-van-las-opciones-del-audio)
-o mipelicula.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31
-vop scale=640:480 -npp lb </code><br>
</blockquote>
<code>13.5 \'Three
pass encodding\' (método de las tres pasadas) - Divx4 y pasadas externas
Este es el ejemplo de la documentación de Mencoder para
este método, observa <file/DVD>, indica que
lo que se va a comprimir (input source, fuente origen, el video
origina sin comprimir, etc.), es un archivo o directamente el DVD
en sí. Sí, comprime directamente desde el DVD montado
en la lectora: esto es técnicamente y altamente desaconsejable
(solo piensa que la lectora funcionará a velocidad casi constante
durante varias horas cuando solo está pensada para, a lo sumo funcionar
3 horas, como con películas \'tipo\' El Patriota o Pearl Harbor).
<br>
rm frameno.avi
mencoder <file/DVD> -ovc frameno -o frameno.avi
mencoder <file/DVD> -oac copy -pass 1 -ovc divx4
-divx4opts br=<bitrate> -o /dev/null
mencoder <file/DVD> -oac copy -pass 2 -ovc divx4
-divx4opts br=<bitrate> -o mipelicula.avi<br>
<br>
Ahora con nuestro ejemplo original (los .VOB bajados a disco
de un DVD de Ally McBeal), y los parámetros cambiado en negritas
(recuerda, primero el audio y luego las 2 pasadas):
nice -+19 cat /video/*vob | nice-+19 mencoder -ovc frameno -o
frameno.avi -oac mp3lame -lameopts abr:br=128 -alang es </code></p>
<p><code> cat /video/*vob | nice -+19 mencoder <b>-oac (aquí-van-las-opciones-del-audio)</b>
-o /dev/null -pass 1
-ovc divx4 -divx4opts
br=<bitrate>
-vop scale=640:480 -npp lb
</code><br>
<code> cat /video/*vob | nice -+19 mencoder <b>-oac </b>(aquí-van-las-opciones-del-audio)
-o mipelicula.avi
-pass 2 -ovc divx4 -divx4opts
br=<bitrate>
-vop scale=640:480 -npp lb
</code><br>
</p>
<p>Nota: aquí también podrías querer una <i>preview</i>,
si es así solo sigue el método que usamos para Libavc con
los cambios parámetros necesarios. Para ver las <i>-divx</i>4opts
disponibles haz: <i>man mencoder</i><br>
</p>
</blockquote>
<h3><br>
</h3>
<blockquote>
<h3><a name=\"13.6_Two_pass_encodding_método_de_las\"></a>13.6 <u>\'Two pass
encodding\' (método de las dos pasadas) - Divx4 y pasadas externas</u></h3>
</blockquote>
<blockquote>Este también es un ejemplo de la documentación de
Mencoder, y merece el mismo comentario que en el método anterior.<br>
<code><br>
rm frameno.avi - remueve este archivo si viene de sesiones anteriores
(podría interferir).
mencoder <file/DVD> -oac copy -pass 1 -ovc divx4
-divx4opts br=<bitrate> -o mipelicula.avi
mencoder <file/DVD> -oac copy -pass 2 -ovc divx4
-divx4opts br=<bitrate> -o mipelicula.avi<br>
<br>
Este es nuestro ejemplo original modificado para usar Divx4
como video codec:
cat /video/*vob | nice -+19 mencoder <b>-oac (aquí-van-las-opciones-del-audio)</b>
-o mipelicula.avi -pass 1
-ovc divx4 -divx4opts
br=<bitrate>
-vop scale=640:480 -npp lb
</code><br>
<code> cat /video/*vob | nice -+19 mencoder <b>-oac </b>(aquí-van-las-opciones-del-audio)
-o mipelicula.avi
-pass 2 -ovc divx4 -divx4opts
br=<bitrate>
-vop scale=640:480 -npp lb
</code><br>
</blockquote>
<blockquote>
<h3><a name=\"13.7_Calculando_el_tamaño_en_base_al\"></a>13.7 <u>Calculando
el tamaño en base al vrate</u></h3>
</blockquote>
<blockquote>Si quisierámos o necesitaramos calcular el video rate,
por ejemplo al usar el método de las 2 pasadas; o quisiéramos
lograr un cierto tamaño de archivo deberíamos tener alguna idea
de cómo hacerlo. Todos los resultados deberías tomarlos como
<i>estimativos</i>, tal vez un poco más o un poco menos.<br>
<br>
Este script que encontré en <a
href=\"http://www.linux-malaga.org\">Linux-Málaga</a> calcula el vrate
según la duración de la película y el tamaño
final deseado del AVI. Por supuesto podemos modificar estos parámetros
a nuestro gusto y/o necesidad.<br>
<pre><p><font color=\"black\" size=\"-2\">-------cortar aquí------------------<br>#!/bin/bash<br><br>if [ $# != 1 ] ; then<br> echo \"Uso: encodea-dvd <tiempo en segundos de la peli>\"<br> echo \"\"<br> exit 1<br>fi<br><br># Maximo tamanyo es 700mb o sea 716800kbytes pero ponemos un poco menos por si acaso<br></font></p><p><font
color=\"black\" size=\"-2\">MAXSIZE=700000 # aquí podemos elegir el tamaño que queremos que ocupe el AVI<br><br>SEGUNDOS=$1<br>MINUTOS=$(($SEGUNDOS/60))<br><br>#El Rate del audio es 128bits/s o 16kbytes/s</font></p><p><font
color=\"black\" size=\"-2\">AUDIOSIZE=$((16*$SEGUNDOS))<br>LIBRE=$(($MAXSIZE - $AUDIOSIZE))<br>RATE=$((($LIBRE*8) / $SEGUNDOS))<br><br><br>echo \"Calculando rate para pelicula de duracion $MINUTOS minutos...\"<br><br>echo \"Rate estimado: $RATE\"<br><br>FINALSIZE=$(( ($RATE * $SEGUNDOS)/8 + $AUDIOSIZE))<br><br>echo \"Tamaño estimado: $FINALSIZE\"<br><br>echo \"El comando seria:\"<br>echo \"mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=$RATE <br>-vop scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o file.avi\"<br>----------termina aquí--------------<br></font></p></pre>
<i><font color=\"#cc0000\"><a
href=\"http://www.linux-malaga.org/\"><br>
</a></font></i>Ten en cuenta que la línea que da como salida el
script, implica encodeado directo desde el DVD, y sin ningun método
de pasadas. El codec de audio es Lame y el de video Libavc pero tambien podría
usarse con cierta exactitud con un codec de video \'tipo divx\' como Divx4.<br>
<br>
También está disponible un programa que hace aproximadamente
lo mismo que el script: <a
href=\"http://tuxpower.f2g.net/Divx-Calculator/\">Divx Calc</a> , éste
hace los cálculos tomando como base el codec Divx4 (pero al parecer
esa estimación también funciona para Libavc). <br>
<br>
Aquí tienes un par de resultados de ejemplo (tomados del sitio del
programa), para ver que tal se comporta el programa prediciendo resultados:<br>
<br>
<table bgcolor=\"#cccccc\">
<tbody>
<tr>
<td><font size=\"-1\">Film</font></td>
<td><font size=\"-1\"><strong>Behind Enemy Lines</strong></font></td>
</tr>
<tr>
<td><font size=\"-1\">Results by:</font></td>
<td><font size=\"-1\"><a title=\"ralph@genesys.ro\">Ralph</a></font></td>
</tr>
<tr>
<td><font size=\"-1\">Film Length:</font></td>
<td><font size=\"-1\">101 minutes</font></td>
</tr>
<tr>
<td><font size=\"-1\">Audio Bitrate:</font></td>
<td><font size=\"-1\">96 kb/s</font></td>
</tr>
<tr>
<td><font size=\"-1\">DivX Calc Resutls:</font></td>
<td><font size=\"-1\">845 kb/s video</font></td>
</tr>
<tr>
<td><font size=\"-1\">Requested Size:</font></td>
<td><font size=\"-1\">680 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Actual Size (1st pass):</font></td>
<td><font size=\"-1\">685 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Actual Size (2nd Pass):</font></td>
<td><font size=\"-1\">686 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Ripping Program:</font></td>
<td><font size=\"-1\">mencoder (CVS version 18/08/02)</font></td>
</tr>
<tr>
<td><font size=\"-1\">DivX Codec:</font></td>
<td><font size=\"-1\">libavcodec (CVS version 18/08/02)</font></td>
</tr>
</tbody>
</table>
<br>
<table bgcolor=\"#cccccc\">
<tbody>
<tr>
<td><font size=\"-1\">Film</font></td>
<td><font size=\"-1\"><strong>The Matrix</strong></font></td>
</tr>
<tr>
<td><font size=\"-1\">Results by:</font></td>
<td><font size=\"-1\"><a title=\"ralph@genesys.ro\">Ralph</a></font></td>
</tr>
<tr>
<td><font size=\"-1\">Film Length:</font></td>
<td><font size=\"-1\">131 minutes</font></td>
</tr>
<tr>
<td><font size=\"-1\">Audio Bitrate:</font></td>
<td><font size=\"-1\">96 kb/s</font></td>
</tr>
<tr>
<td><font size=\"-1\">DivX Calc Resutls:</font></td>
<td><font size=\"-1\">629 kb/s video</font></td>
</tr>
<tr>
<td><font size=\"-1\">Requested Size:</font></td>
<td><font size=\"-1\">680 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Actual Size (1st pass):</font></td>
<td><font size=\"-1\">682 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Actual Size (2nd Pass):</font></td>
<td><font size=\"-1\">683 MB\'s</font></td>
</tr>
<tr>
<td><font size=\"-1\">Ripping Program:</font></td>
<td><font size=\"-1\">mencoder (CVS version 18/08/02)</font></td>
</tr>
<tr>
<td><font size=\"-1\">DivX Codec:</font></td>
<td><font size=\"-1\">libavcodec (CVS version 18/08/02)</font></td>
</tr>
</tbody>
</table>
<br>
<br>
Es muy importante saber que el método de 2 pasadas produce un AVI
final de menor tamaño (y alta calidad), que los otros métodos
o que encodeando directamente. Por esto es imposible calcular con exactitud
el tamaño final exacto, por lo que el programa da como estimado un
tamaño promedio.<br>
<br>
<h3><a name=\"13.8_Cropping_de_Videos_con_Mencoder\"></a>13.8 <u>Cropping
del Video con Mencoder</u></h3>
Si el video tiene bordes, lo que es usual en DVDs, hay que calcular su
tamaño para no encodearlos junto con la película en sí,
para ello usamos la opción <i>-cropdetect.</i> Si el video está
en formato 16:9 hay que especificarlo, también escalamos el video
a la resolución que querramos de salida (640x480 en este caso). Un
ejemplo:
<pre><font color=\"black\">mencoder <archivo/DVD> -ovc <codec y opciones de video> -oac <codec y opciones de audio> </font><font
color=\"black\"><br><b>-vop cropdetect</b>,scale -zoom -xy 640</font><font
color=\"black\"> -aspect 16:9</font><font color=\"black\"> -o mipelicula.avi<br></font></pre>
Hay que dejar que Mencoder codifique un poco el video (hasta saber que está
en la película y no en los créditos iniciales), y entonces
en la salida (de la consola), nos dirá los valores que hay que ponerle
a la opción <i>-crop</i> para quitar los bordes, estos valores son
relativos a la resolución de salida (si la película está
en formato 16:9 en <i>-aspect </i>pusimos 16:9, está todo bien ;-).
Así la línea para codificar quedaría así:<br>
<br>
<pre><font color=\"black\">mencoder <archivo/DVD> -ovc <codec y opciones de video> -oac <codec y opciones de audio> </font><font
color=\"black\"><br><b>-vop </b></font><b><font color=\"black\">crop=640:272:0:44</font></b><font
color=\"black\">,scale -zoom -xy 640</font><font color=\"black\"> -aspect 16:9</font><font
color=\"black\"> -o mipelicula.avi</font></pre>
</blockquote>
<blockquote>
<h3><a name=\"13.7_Usando_la_familia_de_codecs\"></a>13.9 <u>Usando
la familia de codecs Libavcodec</u></h3>
</blockquote>
<blockquote>
<p><a href=\"http://ffmpeg.sf.net\">libavcodec</a> provee simple encodding
a muchos formatos de videos. Puedes encodear a los siguientes codecs: </p>
<ul>
<li>mjpeg - Motion JPEG</li>
<li>h263 - H263</li>
<li>h263p - H263 Plus</li>
<li>mpeg4 - DivX4</li>
<li>msmpeg4 - the old DivX</li>
<li>msmpeg4v2 - Micro$oft MPEG4 V2 (DivX alias MP43 predecessor)</li>
<li>rv10 - an old RealVideo codec</li>
<li>mpeg1video - MPEG1 video :)</li>
</ul>
<p>Para encodear en Mencoder, usa el nombre de la primera columna, luego
del parámetro <i>vcodec</i>, por ejemplo:<br>
<code>-lavcopts vcodec=msmpeg4
Otro ejemplo, con compresión MJPEG:
mencoder <archivo> -o title2.avi
-ovc lavc -lavcopts vcodec=mjpeg13.10 Notas
finales sobre encodding con Mencoder
Similares consideraciones para encodear con Xvid si se
desea, en cuanto a pasadas y audio/video. Mencoder soporta muchos tipos
de filtros aparte del de rescaling ( -vop scale=X:Y ), que
usamos nosotros, y también muchos parámetro sobre calidad e
de imagen, tanto internos de los codecs como externos, propios de Mencoder
en sí. Ver detalles con man mencoder (las opciones para Mencoder
están casi al final). Mirando el manual se aprecia que tanto Mplayer
como Mencoder pueden ser usados para muchas más cosas que para simple
player y encoder (fijate algunas en Trucos Adicionales).
14. Subtítulos
En un DVD los subtítulos son guardados como imágenes que
se muestran encima de la película. De esa manera los autores tienen
amplias opciones para como se verán sus subtítulos (y hace
mucho más fáciles de implementar subtítulos de lenguages
asiáticos). Para nosotros esto puede o no ser un problema, dependiendo
de que subtítulos querramos incluir directamente dentro de
la imagen o como un archivo/stream separado.
14.1 Convirtiendo
subtítulos a formato de texto
Tal vez no quieras o no necesites ver los subtítulos alguna vez
(por alguna razón). Esto no será posible si los incluyes
en la película durante el encoding. Para tener la opción mencionada
puedes extraer los subtítulos del DVD a un archivo/stream externo
(al AVI), que puedes o no usar. El texto de los subtítulos puede
ser fácilmente escalado por el player (agrandarlo o achicarlo), seleccionando
la fuente apropiada (esto sí es una buena razón para incluir
subtítulos por separado, si usas lentes entenderás de seguro).
Por otra parte el archivo/stream suele ser muy pequeño (un poco más
de 100 KB).
Para este proceso debes usar Transcode y sus fuentes. Necesitas tccat
y tcextract de Transcode y los archivos transcode/contrib/subrip,
de los fuentes de Transcode.
14.2 Compilando
las herramientas
- Asegúrate de tener gocr
y ispell instalados (y sus respectivos paquetes \'devel\' solo para
estar seguros). - Cambia al directorio subrip (
cd transcode/contrib/subrip)
y hasmake. - Copia
srttool,subtitle2pgm
ypgm2txta un directorio en tuPATH. - Tal vez tengas que cambiar el script
pgm2txt
si tu gocr no soporta la opción-p. Al
final hay 2 líneas conteniendo-p ${DBPATH}. Simplemente
bórralas (antes verifica el soporte o de la opcion con man gocr).
14.3 Extrayendo
el stream del subtítulo
Asumo que ya copiaste los .VOB de tu DVD al disco con vobcopy -m, que
quiere decir, que el DVD ha sido completamente duplicado incluyendo los
archivos .IFO (si esto no es así ajusta el origen en la línea
de comando).
Primero veamos que subtítulos están disponibles, podemos
usar Mplayer:
mplayer -dvd-device /video/st-tng/disc1/ -dvd 1 -vo null -ao
null -frames 0 -v 2>&1 | grep sid
Esto hace que Mplayer solo imprima información acerca del origen
y no ejecute el video. Te dará una lista de subtítulos como
esta: [open] subtitle ( sid ): 0 language: da
[open] subtitle ( sid ): 1 language: de
[open] subtitle ( sid ): 2 language: en
[open] subtitle ( sid ): 3 language: es
[open] subtitle ( sid ): 4 language: fr
[open] subtitle ( sid ): 5 language: it
[open] subtitle ( sid ): 6 language: nl
[open] subtitle ( sid ): 7 language: no
[open] subtitle ( sid ): 8 language: sv
[open] subtitle ( sid ): 9 language: en
Ahora tenemos el sid (subtitle ID, id del subtítulo), para
el/los lenguajes que querramos extraer. Lo hacemos (extraigo subtítulos
en español):
tccat -i /video/st-tng/dic1/ -T 1 -L | tcextract -x ps1 -t
vob -a 0x23 > subs-es
El -a 0x21 es el número hexadecimal
del stream de subtítulos: 0x20 + sid. Para español es (en
este caso): 0x20 + 3.
14.4 Conviertiendo
el stream raw
Ok, ahora tenemos un stream raw del subtítulo, pero que hacemos
con él? Primero tenemos que convertir cada entrada del subtítulo
en una imagen. Para esto hacemos:
<br>
subtitle2pgm -o spanish -c 255,255,0,255 < subs-es
Un tip, con -c podés especificar el nivel de gris usado en la
conversión. La idea es hacer el trabajo para gocr tan fácil
como sea posible. Tendrás que experimentar un poco con los parámetros,
pero no es difícil. Aquí hay ejemplos de un DVD de Star
Trek - The Next Generation:
- -c 0,255,255,255
- obviamente erronéo
</code></a></li>
<li><a href=\"/articulos/encoding_divx_en_linux/subtitles-255-0-255-255.png\" target=\"_blank\"><code>
</code></a><i><a
href=\"/articulos/encoding_divx_en_linux/subtitles-255-0-255-255.png\">-c 255,0,255,255</a> </i>- este se ve
bien<br>
</li>
<li><a href=\"/articulos/encoding_divx_en_linux/subtitles-255-255-0-255.png\" target=\"_blank\"><code>
</code></a><i><a
href=\"/articulos/encoding_divx_en_linux/subtitles-255-255-0-255.png\">-c 255,255,0,255</a> </i>- no queremos
este<br>
</li>
<li><a href=\"/articulos/encoding_divx_en_linux/subtitles-255-255-255-0.png\" target=\"_blank\"><code>
</code></a><a
href=\"/articulos/encoding_divx_en_linux/subtitles-255-255-255-0.png\"><i>-c 255,255,255,0</i></a> - tampoco
este</li>
</ul>
como puedes ver necesitas una imagen que no contenga caracteres \'outlined\'
(borrosos), sí queremos aquella que se \'parece\' bastante a lo que
vemos al ver subtítulos .<br>
<p> <code>subtitle2pgmcrea muchas imágenes - una para cada
subtítulos y un archivo de control llamadospanish.srtx
en este caso que contiene la duración de cada subtítulo.
El paso siguiente es hacer que gocr reconozca el texto:
pgm2txt spanish
Ten cuidado, gocr te preguntará por los caracteres que
no pueda reconocer, esto es normal. Una vez que esté listo corre
ispell sobre
</code>los archivos creados:</p>
<p><code>ispell -d spanish spanish*txt</code><br>
<code>(si esta no es la línea correcta para el idioma
checkea con man ispell).
El último paso es hacer que srttool incluya el texto
actual dentro del archivo.srtx:
srttool -s -w < spanish.srtx > spanish.srt
Listo, ahora tenés un subtítulo para tu película,
fijáte con Mplayer.
14.5 Extrayendo
subtítulos de DVD a archivos Vobsub con MencoderEste programa es capaz de extraer subtítulos de un DVD a archivos
con formato Vobsub. Estos son un para de archivos terminados en .idx
y .sub que usualmente están empaquetados en un solo
archivo .rar. Mplayer puede ejecutarlos con las opciones -vobsub
y -vobsubid.
Se puede especificar el nombre-base (sin la extensión idx o sub),
de los archivos de salida con -vobsubout y el index para el
subtítulo resultante -vobsubindex.Si la entrada (input, origen), no es un DVD puede usar -ifo
para indicar el archivo .ifo que necesitará el -vobsubid
para construir el archivo .idx.
Si la entrada no es un DVD, y no tienes un archivo .ifo , tendrás
que usar la opción -vobsubid para indicar el lenguaje de subtítulos
a bajar en el archivo .idx.
Cada vez que corra un comando para bajar subtítulos se añadirán
a los archivos .idx y .sub que ya existen, así que
deberías
borrarlos/renombrarlos antes de empezar el proceso.
14.5.1 Ejemplos
de como bajar subtítulos con MencoderCopiando 2 subtítulos de un DVD al hacer 3 pasadas
rm subtitles.idx subtitles.submencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno
mencoder -dvd 1 -oac copy -ovc divx4 -pass 1mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5Copiando un subtítulo en francés de un archivo MPEG
rm subtitles.idx subtitles.submencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 115. Trucos Adicionales
15.1 Arreglando
audio desincronizado con Transcode
Esto no funciona con AVIs con mp3 VBR/ABR. Usamos avisync (parte
del paquete Transcode de utilidades). Usar solo con AVIs de audio mp3
CBR (como los generados con Transcode).
avisync es fácil de usar, solo tienes que dar un archivo
de entrada (-i nombre.avi ), a \'arreglar\' y un archivo de
salida (-o nuevo_nombre.avi ), y el offset de sincronización
en frames (-n count ). Según la página de ayuda de
avisync, count>0 : implica que audio empieza en
el frame \'count\'. count>0 : coloca un \'count\' de \'relleno\' de audio.
Por ejemplo:
avisync -i mipelicula-no-sincronizada.avi -o mipelicula-sincronizada.avi
-n -2
15.2 Dividiendo
AVIs (splitting) con Transcode
Esto no funciona con AVIs con mp3 VBR/ABR. Usamos avisplit (parte
del paquete Transcode de utilidades). Usar solo con AVIs de audio mp3
CBR (como los generados con Transcode).
avisplit es fácil de usar, solo tienes que dar un archivo
de entrada (-i nombre.avi ), y cuando será
dividido. Puedes dividir luego de cierto tamaño (-s tamaño_en_mb
), luego de un cierto número de frames (-f f1-f2
), o luego de cierto número de segundos(-t s1-s2 ).
Por ejemplo:
avisplit -i mipelicula-muy-grande-para-un-cd.avi -o mipelicula
-s 700
Esto producirá archivos llamados mipelicula-0000.avi, mipelicula-0001.avi,
etc. que tienen 100mb como máximo.
15.3 Extrayendo audio
de VOBs/MPEGs/AVIs con Mplayer
Mplayer puede usarse fácilmente para extraer sonido. El modificador
-vo null le dice a Mplayer que no muestre información
de video (y nos sirve para trabajar solo con outputs de sonido).
- VOB -> AC3 :
mplayer -vo null -nogui -alang es -dumpaudio
-dumpfile lang-es.ac3 *vob/ Esto extrae el audio en español
a un archivo llamado lang-es.ac3 - VOB -> WAV:
mplayer -vo null -nogui -aid 123 -ao pcm
-aofile lang-es.wav *vob/ Esto extrae la pista de audio número
123 (el audio en español), remixa el sonido AC3 a PCM y escribe
el resultado a lang-es.wav. - MPG -> MP2:
mplayer -vo null -nogui -dumpaudio
-dumpfile audio.mp2 mivideo.mpg/ Esto extrae el audio a un archivo
llamado audio.mp2. - AVI -> WAV:
mplayer -vo null -nogui -ao pcm -aofile
audio.wav mivideo.avi/ Esto extrae el audio, lo convierte a
PCM y escribe el \'wav\' resultante a audio.wav.
Esta no son todas las posibilidades, en general usando -dumpaudio
-dumpfile nuevo-audio.extension puedes extraer el audio sin procesamiento
previo y con -ao pcm -aofile nuevo-audio.wav si quieres salida
en formato \'wav\'.
15.4 Reescalando
películas/videos con Mplayer/MencoderMuchas veces necesitarás achicar/agrandar la resolución
de una película/video, por ejemplo para encodear SVCDs a Divx. Para
rippear DVDs casi siempre se reescala a 640x480 o menos. Los SVCDs tienen
una resolución de 480x480, y sus headers contienen la información
necesaria para que el player los reescale (por ej. 480x480 + 4:3 = 640x480).
Los AVIs Divx (no importa con que codec se compriman), no guardan esta información,
así que tendrás que reescalar.
El proceso de reescalado lo hace el filtro de video scale . La
calidad del escalado se setea con la opción -sws, si no se
especifica Mencoder usa \'0\' fast bilinear (un equilibrio entre calidad/velocidad
de escalado).
Por ej:
mencoder sample-svcd.mpg -lavcopts vcodec=mpeg4:more_options
-vop scale=640:480 -sws 2 -o output.avi
Esto también te permitirá ver películas (si usas
el filtro en Mplayer), en resolución muy baja (400x166, 400x180,
etc.) con un tamaño aceptable y menos pixelado. Según la documentación
de Mplayer y mi experiencia propia usar SDL (-vo sdl), junto con
el filtro scale da los mejores resultados para ver películas
en baja resolución. Ten en cuenta que el escalado es un proceso \'pesado\'
para el procesador así se necesitará una máquina potente.
Ejemplo de Black Hawk Down en 400x166 (entró en un CD),
en una PIII de 550 con 128 de ram y UDMA 66 funcional (que está
activado y con los seteos ideales, ver man hdparm ), en un Mandrake
8.2:
mplayer -vop scale=640:305 -vo sdl black-hawk.avi15.5 Encodeando
desde múltiples archivos de imágenes (JPEGs o PNGs)
con MencoderMencoder es capaz de crear películas/videos desde uno o más
archivos JPEG o PNGs, Simplemente hace un framecopy que crea archivos MJPEGs
(Motion JPEG), o MPNGs (Motion PNG).
Por supuesto tu Mplayer/Mencoder tiene que estar
compilado con el soporte correspondiente para el tipo de imágenes
que quieras usar. Fijáte que soporte tenés con
mplayer -vc help | grep png
, dió como salida:
mpng mpng
working PNG images decoder [libpng]
mplayer -vc help | grep jpeg ,
dió como salida:
ffmjpeg ffmpeg working
FFmpeg MJPEG decoder [mjpeg]
ijpg ijpg
working Independent JPEG Group\'s codec [libjpeg]
m3jpeg vfw
working Morgan Motion JPEG Codec [m3jpeg32.dll]
mjpeg vfw
working MainConcept Motion JPEG [mcmjpg32.dll]
m3jpegds dshow crashing
Morgan MJPEG [m3jpegdec.ax]
Los que están en negritas son los que interesan.
Recordar que para tener activado el soporte para las librerías,
es necesario compilarlo y para eso hay que tener instaladas las librerías
y sus correspondientes paquetes \'devel\' (libpng y libjpeg). Para ver qué
tenés instalado podés hacer un:
rpm -qa | grep png
A mi me salió:
libpng3-devel-1.2.1-6mdk
libpng2-1.0.12-2mdk
libpng3-1.2.1-6mdk
y para jpeg: rpm -qa | grep jpeg, salió:
libjpeg62-devel-6b-21mdk
libjpeg62-6b-21mdk
Conclusión tengo soporte para ambas librerías y está
compilado.
15.5.2 Explicación
del Encodding de múltiples imágenes- Mencoder decodifica la imágenes de entrada con libjpeg
(cuando decodifica PNGs usa libpng).
- Luego de lo anterior, envía la imagen decodificada
la compresor de video elegido (DivX4, Xvid, ffmpeg msmpeg4, etc.), Ten
cuidado con el decoder PNG, pues actualmente solo soporta output
en formato RGB, por lo que no puede usarse en codecs que requieren formato
YUV como input como Divx4 o el msmpeg4 de Libavc.
15.5.3 Ejemplos
de encodding desde múltiples archivos de imágenes (JPEGs
o PNGsLa explicación de la opción
-mfpueden encontrarse
la página man o en la documentación.
Creando un archivo Divx4 desde todos los JPEG en el directorio actual:
mencoder \\*.jpg -mf on:w=800:h=600:fps=25 -ovc
divx4 -o output.aviCreando un archivo Divx4 desde algunos JPEG en el directorio actual:
mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25
-ovc divx4 -o output.aviCreando un archivo Motion JPEG (MJPEG) desde todos
los JPEG en el directorio actual:
mencoder \\*.jpg -mf on:w=800:h=600:fps=25 -ovc copy -o
output.aviCreando un archivo sin comprimir desde todos los PNG
en el directorio actual:
mencoder \\*.png -mf on:w=800:h=600:fps=25:type=png -ovc
raw -o output.aviCreando un archivo Motion PNG (MPNG) desde
todos los PNG en el directorio actual:
mencoder \\*.png -mf on:w=800:h=600:fps=25:type=png -ovc
copy -o output.avi15.6 Copia
de Stream con Mencoder (stream copying)Mencoder puede manejara streams de entrada de dos maneras: encode
(encodear), o copy (copiar). Veremos como funciona/ se usa
la segunda.- Video stream (opción
-ovc copy):
se pueden hacer muchas cosas, como \'meter\' (no comprimir), un stream
FLI o VIVO o MPEG dentro de un AVI. Por supuesto, Mplayer puede ejecutar
estos archivos. Una cosa útil: la copia de streams de video puede
ser útil cuando no queremos copiar el stream de audio (para separar
video de audio) - Audio stream (opción
-oac copy):
es posible tomar un archivo externo de audio (un mp3, ogg, etc.), y mezclarlo
con el stream de salida. Se puede usar para copiar el audio de un AVI al
recomprimir el video, si no se quiere \'tocar\' el audio, dando como resultado
un AVI con video recomprimido y el mismo audio que el original.
15.7 Arreglando
AVIs con índices rotos o mal interleaving con Mencoder
Es lo más simple. Copiamos los streams de video y audio y Mencoder
genera el índice y realiza el interleaving (si el video no está
interleaved). Esto no arregla problemas extra en el audio
y/o video.
<br>
<br>
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
15.8 Usando
archivos de audio separados con MplayerA veces quieres ejecutar un video pero un archivo de audio y no con
el audio original (el que está \'dentro\' del video, interleaved - VOB -> AC3 :
