PDF de programación - Captura y transmisión de video en GNU/Linux

Imágen de pdf Captura y transmisión de video en GNU/Linux

Captura y transmisión de video en GNU/Linuxgráfica de visualizaciones

Publicado el 11 de Junio del 2019
462 visualizaciones desde el 11 de Junio del 2019
120,8 KB
11 paginas
Creado hace 19a (13/11/2004)
Captura y transmisión de video en GNU/Linux

Mauricio Venegas Morales, Departamento de Electrónica, UTFSM

1



el hardware a

comienza por detallar

Resumen—Este documento describe el proceso de captura de
video en GNU/Linux y su posterior transmisión sobre redes IP.
Se
emplear,
posteriormente los ajustes que deben realizarse al sistema
operativo y para terminar la instalación y configuración de un
grupo de programas que permitan transmitir el flujo de video
(Streaming) a los clientes remotos. Para lograr el objetivo es
necesario utilizar dispositivos de captura compatibles con la API
Video for Linux (V4L) o Video for Linux 2 (V4L2), en conjunto
con bibliotecas y herramientas de software libre.


Índice de Términos — Linux, Redes IP, Streaming,

Transmisión de Video, V4L, V4L2.


I. INTRODUCCION

E

L avance en la tecnología de las redes de datos en
conjunto con el importante desarrollo de las herramientas
de código abierto en este último tiempo, permiten que hoy en
día no sea utópico pensar en entregar contenido mu ltimedia de
alta calidad de imagen y sonido por la red a un costo bajísimo
comparado con otras soluciones más
tradicionales de
transmisión a distancia. Es así como la telemedicina, tele
educación o también el mundo de la entretención, por
mencionar solo algunas áreas, pueda buscar refugio en
implementaciones como la que se describe en este artículo.

La transmisión de información multimedia, a través de la red,
con contenido en vivo es posible gracias a que los servidores
de medios hoy en día pueden manejar Streaming, es decir, el
flujo puede reproducirse en la medida que es recibido. Esta
tecnología es muy práctica ya que tradicionalmente sólo era
posible reproducir un archivo de video o audio una vez
descargado completamente al disco duro.

Existe una gran cantidad de programadores alrededor del
mundo que realizan importantes aportes en el área de la
multimedia basados en la filosofía GNU. Esto permite que el
conocimiento sea heredado hacia otros desarrolladores que
pueden continuar con el progreso y mejorar el software. Como
ejemplo se menciona el caso de la aplicación FFMPEG [1], la
cual fue la base para el desarrollo de otros grandes proyectos
de streaming como VideoLAN [2] y MPEG4IP [3].

También es significativo el desarrollo de la API de video V4L
[4], ya que aporta un nivel de abstracción al modelo de



programación de los dispositivos de captura de video en
GNU/Linux. Actualmente este proyecto está en decadencia
para darle la entrada a su sucesor V4L2 [4], una API de video
mucho más madura y robusta. Sin embargo estas dos API’s
conviven en los Kernels Linux de la serie 2.6.x, puesto que aun
hay drivers y aplicaciones que utilizan la versión tradicional.

Otro punto destacable es la incursión de las redes inalámbricas
de alta velocidad en entornos privados y comerciales, en las
cuales ya se están haciendo estudios para permitir optimizar la
calidad de servicio (QoS) con el objetivo de expandir el alcance
de aplicaciones de tiempo real, lo que abre una nueva ventana
en el campo de la difusión multimedial.

Este trabajo pretende entregar los elementos necesarios para
que el lector pueda montar un sistema de transmisión de video
de bajo costo, presentando también una descripción de los
tópicos involucrados.


II. DESCRIPCION DEL HARDWARE Y SOFTWARE


Para desarrollar un sistema de transmisión de video con las
características que se requieren, se necesita implementar una
infraestructura como la que se presenta en la figura 1. La red
sobre
la cual descansa, debe soportar altas tasas de
transferencia. Básicamente, la velocidad de transmisión está
íntimamente ligada a la calidad de la imagen y los codecs
utilizados. Se recomienda como mínimo, por motivos de
experimentación, que el sistema se monte bajo una red LAN
Fast Ethernet (100 Mbps).



Fig. 1. El esquema del sistema de streaming a utilizar. Dependiendo de la
implementación en particular, la cámara de video puede ser de tipo
webcam con conexión USB, o bien alguna cámara tradicional con salida
de video compuesto que puede ser conectada a una tarjeta capturadora.





2

El equipamiento necesario para realizar el proyecto consiste en
un computador personal de arquitectura IA32 [10] (más
conocida como x86 o PC compatible), tarjeta capturadora de
video y cámara web USB en el lado del servidor. Por el lado del
cliente, debe haber una máquina capaz de recibir y decodificar
los flujos enviados por el servidor, para lo cual se recomienda
un procesador Pentium II con 32 MB de RAM o superior.

Las características generales del PC que va a tener la
responsabilidad de servir los flujos multimedia, se presentan en
la TABLA I. Cabe destacar que la implementación a describir
se puede lograr en un hardware un poco más limitado que el
utilizado, a costa de un mayor retardo en la transmisión del
evento.



TABLA I

CARACTERISTICAS DEL COMPUTADOR EMPLEADO COMO SERVIDOR

Elemento

Propiedades

Mínimo Requerido

Procesador

Memoria RAM
Chipset
Puertos USB
Video
Sonido
Sistema
Operativo

AMD Athon XP
1800+
256 MB DDR PC2900
VIA KT333
VIA UHCI
NVidia TNT2 32MB
via8233a
Debian GNU/Linux
Sarge

Pentium III 900 Mhz

128 MB PC100

UHCI - OHCI
Vesa
OSS
Debian GNU/Linux
Woody


Debido a la inmensa cantidad de operaciones matemáticas que
debe realizar un codificador de video, como es el caso de
MPEG-4, para comprimir el video y audio en tiempo real, resulta
más cómodo trabajar con equipos con capacidades de
cómputo y memoria de trabajo elevadas.

La captura de video en GNU/Linux, se realiza a través
dispositivos compatibles con las API’s V4L/V4L2. En este caso
se trabajó con dos tipos de cámara. Una de ellas corresponde a
una cámara de video con salida de video compuesto que es
conectada a una tarjeta capturadora. La otra es del tipo
webcam con audio integrado, que se conecta al computador
vía puerto USB.


A. Tarjeta capturadora de video chipset BT878
Entrada Video compuesto
Resolución 640x480

B. Cámara web Philips ToUcam II
Audio integrado USB
Vídeo: CIF(320x240)
imagen: VGA (640x480)

Lo más importante al momento de elegir un dispositivo de
captura, es verificar que exista el soporte de éste en
GNU/Linux, ya que de otra forma, se puede perder mucho
tiempo en el desarrollo de un controlador.


Ahora se pasa describir lo que concierne a la parte intangible
del sistema, el software, que está compuesto por el Sistema
Operativo, los controladores y las aplicaciones a utilizar.

Todo el software utilizado corresponde a la categoría de
Software Libre, en sus distintos tipos de licencias. Como
consecuencia de lo anterior se destaca que, por un lado los
costos de implementación son muy bajos (uno de los factores
más importantes) y por otro lado que existen muchos sitios de
Internet donde se puede buscar información sobre ellos.

Dos situaciones de vital importancia, como lo es la utilización
de la cámara web Philips y el soporte para V4L2, implican hacer
un proceso previo en montaje del servidor de Streaming. Este
proceso se conoce como compilación del Kernel Linux en el
Servidor. Esto se debe a que nativamente no están
implementados estos recursos en el sistema operativo. Para
ello, es necesario descargar de la Web una serie de elementos
que son útiles para construir una nueva imagen del Kernel
Linux, preparada específicamente para el propósito que se
requiere.

Los elementos que es necesario descargar son:


• Código fuente del kernel
• Drivers de los dispositivos
• Parche del Kernel para soporte V4L2



Este documento se basa en el Kernel 2.4.x (x >= 26) en el cual
no está incluido el soporte para V4L2. El Kernel Linux 2.6.x ya
posee esta API.


III. PREPARACION DEL KERNEL


Para entender el procedimiento que se pasa describir, es
necesario tener un conocimiento básico de compilación y
parchado del Kernel Linux, ya que hay que realizar algunas
veces ciertos ajustes dependiendo de las versiones de las
herramientas a utilizar.

Los pasos básicos a realizar son los siguientes:


• Descargar código fuente Kernel
• Descargar driver webcam
• Descargar parches V4L2
• Aplicar parches
• Compilar Kernel


Se procede a describir en detalle estos pasos para generar un
sistema operativo apto para trabajar. Se deben ejecutar todos
los comandos bajo la cuenta del súper usuario, ya que él es el
único capaz de realizar cambios en el sistema.

A modo de orden y simplicidad, se recomienda crear un
directorio donde
archivos
descargados.

almacenen

se

todos

los



3


# mkdir /usr/src/video4linux
# cd /usr/src/video4linux

Se baja e instala el código fuente de Kernel 2.4.26 desde las
fuentes oficiales [11],

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-
2.4.26.tar.bz2

o bien, desde los repositorios de Debian.

# apt-get install kernel-source-2.4.26

Este paquete queda instado en /usr/src/. Se descomprime con
el comando

# cd /usr/src/
# bzip2 -cd kernel-source-2.4.26.tar.bz2 | tar xf -

o alternativamente con

# tar -jxvvf kernel-source-2.4.26.tar.bz2

El procedimiento de descompresión es análogo si se descargan
las fuentes desde el sitio oficial.

A continuación se debe realizar un link simbólico al directorio
del código fuente, con el objetivo de hacer co
  • Links de descarga
http://lwp-l.com/pdf16085

Comentarios de: Captura y transmisión de video en GNU/Linux (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad