Streaming de Vídeo

Vicente González Ruiz

December 14, 2014

Contents

1 Finalidad
2 Protocolos de transporte
3 Procedimiento
4 Entregables

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:

  1. 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.
  2. 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

  1. 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.
  2. 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.
  3. Conectar VLC al receptor UDP: Comprobaremos que el vídeo se recibe correctamente reproduciéndolo.
  4. 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.
  5. 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

  1. Una memoria explicativa de los experimentos realizados junto con el código comentado y una explicación de su uso.
  2. ¿ Cómo enviría de forma simultanea el vídeo a dos receptores diferentes?