3.9. Entrada de TV

Esta sección es acerca de como poder mirar/capturar desde un dispositivo sintonizador de TV compatible con V4L. Vea la página del manual para una descripción de las opciones de TV y los controles del teclado.

3.9.1. Compilación

  1. Primero, deberá recompilar. ./configure detectará los archivos de encabezados de las cosas de v4l y la existencia de las entradas /dev/video*. Si existen, el soporte de TV se compilará (vea la salida de ./configure).

  2. Asegúrese de que su sintonizador funcione bien con otro software de TV en Linux, como por ejemplo con XawTV.

3.9.2. Consejos de Uso

El listado completo de opciones esta disponible en la página del manual. Aquí hay solamente un par de consejos:

  • Use la opción channels(canales). Ejemplo:

    -tv channels=26-MTV,23-TV2

    Explicación: usando esta opción, solo se podrá ver el canal 26 y el 23 y habrá un bonito texto en pantalla (OSD) por cada cambio de canal, mostrando el nombre del canal. Los espacios en el nombre del canal deben ser reemplazados por el carácter "_".

  • Elija varias dimensiones de imagen razonables. Las dimensiones de la imagen resultante deberían ser divisibles por 16.

  • Si captura el vídeo con una resolución vertical más grande que la mitad de la resolución total (por ejemplo: 288 para PAL o 240 para NTSC), asegúrese que activó el desentrelazado. De otro modo obtendrá una película la cual esta distorsionada durante las escenas con movimientos rápidos y el controlador de tasa de bits probablemente no podrá ser capaz de retener la cantidad de información necesaria ya que el entrelazado produce una gran cantidad de detalles y por lo tanto consume una gran cantidad de ancho de banda. Puede activar el desentrelazado con la opción -vf pp=DEINT_TYPE. Normalmente pp=lb funciona bien, pero es un problema de preferencias personales. Vea otros algoritmos de desentrelazado en el manual y pruebelos.

  • Corte el área no usada. Cuando captura vídeo, las áreas en los bordes normalmente son negras y contienen algo de ruido. Esto también consume un montón de ancho de banda innecesario. Más precisamente no son las áreas en negro por si mismas pero si las bruscas transcisiones entre el negro y la imagen de vídeo brillante pero por ahora eso no es importante por ahora. Antes de empezar a capturar, ajuste los argumentos de la opción crop de tal manera que todo lo negro quede afuera. Nuevamente, no se olvide de mantener las dimensiones de manera razonables.

  • Observe la carga de CPU. La mayoría del tiempo no debería cruzar el límite del 90%. Si tiene un gran buffer de captura, MEncoder puede sobrevivir una sobrecarga por unos pocos segundos y nada más. Es mejor apagar los salvadores de pantalla 3D OpenGL y ese tipo de cosas.

  • No se meta con el reloj del sistema. MEncoder usa el reloj del sistema para mantener sincronía entre Audio y Vídeo. Si ajusta el reloj del sistema (particularmente volviendo hacia atrás en el tiempo), MEncoder se confunde y pierde cuadros. Esto es un problema importante si está conectado a una red y corre algún tipo de software de sincronización como NTP. Debería desactivar NTP durante el proceso de captura si quiere capturar en forma confiable.

  • No cambie la opción outfmt a menos que sepa lo que está haciendo o su tarjeta/controlador realmente no soporte la opción por omisión (espacio de color YV12). En las versiones viejas de MPlayer/ MEncoder era necesario especificar el formato de salida. Este problema se debería estar resuelto en las versiones actuales y la opción outfmt no se requiere más, ya que la opción por omisión sirve para la mayoría de los propósitos. Por ejemplo si está capturando en DivX usando libavcodec y especifica outfmt=RGB24 para incrementar la calidad de las imágenes capturadas, las imágenes capturadas serán realmente convertidas nuevamente a YV12 por lo que lo único que logra es un desperdicio masivo de ciclos de CPU.

  • Para especificar el espacio de colores I420 (outfmt=i420), deberá agregar una opción -vc rawi420 debido a un conflicto de fourcc con un codec de vídeo de Intel Indeo.

  • Hay muchas maneras de capturar audio. Puede capturar el sonido ya sea usando su tarjeta de sonido por medio de un cable de conexión externo entre la placa sintonizadora y la linea de entrada, o usando el chip ADC incorporado en el chip bt878. En este ultimo caso, deberá cargar el controlador btaudio . Lea el archivo linux/Documentation/sound/btaudio (en el árbol de directorio del núcleo, no el de MPlayer) para instrucciones de como usar este controlador.

  • Si MEncoder no puede abrir el dispositivo de audio, asegúrese que este realmente disponible. Puede haber algunos problemas con algunos servidores de sonido como arts (KDE) o esd (GNOME). Si tiene una placa de sonido full dúplex (casi todas las placas decentes lo soportan hoy en día), y está usando KDE, trate activando la opción "full dúplex" en el menú de preferencias del servidor de sonido.

3.9.3. Ejemplos

Salida ficticia, a AAlib :)

mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://

Entrada desde un dispositivo estándar V4L:

mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://

Un ejemplo más sofisticado. Esto hace que MEncoder capture la imagen completa PAL, corte los margenes y desentrelazando la imagen usando un algoritmo linear blend. El audio es comprimido con una tasa de bits constante de 64kbps, usando el codec LAME. Esta configuración es satisfactoria para capturar películas.

     mencoder -tv driver=v4l:width=768:height=576 \
     -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
     -oac mp3lame -lameopts cbr:br=64 \
     -vf crop=720:544:24:16,pp=lb -o salida.avi tv://

Esto adicionalmente escalará la imagen a 384x288 y comprimirá el vídeo a una tasa de bits de 350kbps en modo alta calidad. La opción vqmax suelta al cuantizador y le permite al compresor de vídeo alcanzar tasas de bits muy bajas a expensas de la calidad. Esto puede ser usado para capturar series de TV largas, donde la calidad del vídeo no es tan importante.

     mencoder -tv driver=v4l:width=768:height=576 \
     -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
     -oac mp3lame -lameopts cbr:br=48 \
     -vf crop=720:540:24:18,pp=tn/lb,scale=384:288 -sws 1 \
     -o salida.avi tv://

Es posible especificar una dimensión de imagen más chica en la opción -tv y omitir el escalado de software pero este enfoque usa la máxima cantidad de información disponible y es un poco más resistente al ruido. Los chips bt8x8 pueden hacer el promediado de pixels solo en dirección horizontal debido a limitaciones de hardware.