Streaming de Vídeo
Vicente González Ruiz
December 14, 2014
Contents
1 Finalidad
Una secuencia de vídeo es un conjunto de datos que descomprimidos con un player
(reproductor) de vídeo permite reconstruir (generalmente una aproximación) del
vídeo original.
Streaming en el nombre que recibe el proceso de recibir y reproducir al mismo
tiempo.
En esta práctica aprenderemos a transmitir vídeo a través de la red Internet
usando un lenguaje de programación genérico, como puede ser Python, Java o C.
Como player usaremos VLC.
2 Protocolos de transporte
Todos los sistemas operativos actuales permiten que dos aplicaciones dentro o fuera
del mismo host se comuniquen datos mediante un protocolo de transporte.
Los protocolos de transporte básicos son:
- Transmission Control Protocol (TCP): Permite comunicar dos
procesos de forma fiable. Realiza control de flujo y de congestión, lo
que significa que tanto el receptor como la red controlan la tasa de
transmisión.
- User Datagram Protocol (UDP): Permite comunicar dos procesos,
aunque algunos
paquetes pueden perderse (dependiendo fundamentalmente del estado de
la red y del receptor). No existe ni control de flujo por parte del receptor
ni control de la congestión de la red.
En esta práctica usaremos el UDP porque queremos que sea el emisor el que
controle el flujo, incluso si se pierden algunos bloques de vídeo.
3 Procedimiento
- Implementar un emisor UDP: Leerá el archivo de vídeo (sin
parsearlo, es decir, sin comprender lo que está leyendo) desde disco
o desde la entrada estándar. Lo partirá en bloques de longitud fija
(longitud configurable desde la línea de comandos) y cada bloque lo
enviará a un determinado punto extremo (dirección IP y puerto) que
será configurable desde la línea de comandos.
- Implementar un receptor UDP: Recibirá la sequencia de bloques y
ensamplabrá el vídeo original. El vídeo será emitido vía HTTP a
través de un puerto configurable desde la línea de comandos.
- Conectar VLC al receptor UDP: Comprobaremos que el vídeo se
recibe correctamente reproduciéndolo.
- Reordenar los bloques si se desordenan en tránsito: Añadir un
número de secuencia a cada bloque de forma que el receptor sea capaz de
reconstruir el vídeo a pesar de los bloques se hayan desordenado durante
su transmisión.
- Calcular el tiempo de transmisión de los bloques: Añadir una
estampa de tiempo a los bloques para calcular el tiempo que necesitan
para viajar desde el emisor hasta el receptor. Los relojes del emisor y del
receptor deberán marcar la misma hora.
4 Entregables
- Una memoria explicativa de los experimentos realizados junto con el
código comentado y una explicación de su uso.
- ¿ Cómo enviría de forma simultanea el vídeo a dos receptores
diferentes?