# Reproducción a tiempo real

La reproducción a tiempo real, en directo o en continuo (streaming en inglés) es una técnica que permite reproducir ficheros de audio y de vídeo procedentes de una red informática, por ejemplo Internet (pero también podría hacerse en un sistema de videovigilància), sin tener que esperar a tener descargado todo el archivo entero. Hoy en día muchas empresas ofrecen servicios y aplicaciones a través de esta tecnología, por ejemplo: noticias, TV en directo, sistemas de videovigilancia, videoconferencias, anuncios, etc.

## Antecedentes

Antes de que esta técnica existiera solo había el sistema de bajadas (el cual actualmente coexiste con el sistema de reproducción en tiempo real), con el que para poder reproducir un archivo hay que descargarlo en el disco duro, lo cual supone un alto coste temporal y de bits, puesto que los archivos de audio (normalmente canciones) suelen ocupar entre 3 y 7 MB, y los archivos de video (normalmente películas), con compresión incluida suelen ocupar entre 800 MB y 1,5 GB. Por lo tanto, el tiempo de espera de la bajada puede llegar a ser muy elevado con el sistema de bajadas. La técnica de reproducción en tiempo real rebaja el tiempo de espera al mínimo.

## Funcionamiento

Cuando el usuario realiza una petición a un servidor para reproducir un archivo a tiempo real, el servidor emite el archivo mediante un flujo continuo de datos. El flujo de datos que llega del servidor se almacena en una memoria intermediaria o búfer en el ordenador del usuario cliente, el cual empieza a reproducir lo que hay en esta memoria. Para que no haya interrupciones en la reproducción, hace falta que la velocidad de la transferencia de datos sea más grande que la velocidad de reproducción. También es necesario un tiempo de precarga antes de empezar a reproducir el archivo a fin de que la memoria intermediaria no esté vacía y la reproducción pueda ser continua.

## Origen del flujo de datos

El flujo de datos, basado en el origen de los datos puede ser en directo o a la carta. En directo, el archivo audiovisual es grabado, digitalizado y transmitido por Internet a tiempo real. La memoria intermedia en el ordenador del usuario almacena el flujo y lo reproduce, pero si el usuario quisiera ir adelante en la reproducción no lo podría hacer, puesto que la reproducción es en directo. Tampoco puede volver atrás, puesto que la memoria se va vaciando y renovando continuamente. La reproducción en diferido de un archivo audiovisual también es a tiempo real, con la diferencia que el archivo no es grabado y digitalizado a tiempo real sino que proviene de una base de datos.
A la carta: Archivo audiovisual proviene de una base de datos donde el usuario puede escoger cuando lo quiere reproducir, a diferencia de la reproducción en diferido, que solo se puede reproducir cuando un servidor lo permite. El usuario puede interaccionar con la reproducción: grabarla, pararla, echar atrás y adelante en el tiempo...

## Componentes

Para poder transmitir un flujo de datos constante y poder reproducirlo en un ordenador hacen falta los siguientes componentes:

### Codificadores

Los archivos audiovisuales tienen que estar codificados con algoritmos de compresión para reducir su medida en bits antes de reproducirlos a tiempo real por la red. Hoy en día, los códecs que más se usan son los siguientes:
      * AAC
      * aacPlus
      * MPEG-1
      * MPEG-2
      * MPEG-4
      * MP3
      * mp3PRO* RealAudio
      * RealVideo
      * video Theora
      * Ogg Vorbis
      * Windows Media Audio (WMA)
      * Windows Media Video (WMV)

### Reproductores

Para reproducir los archivos en tiempo real hacen falta programas que puedan reproducir los datos almacenados en la memoria intermedia. Entre estos programas tenemos los siguientes:
      * Real Player
      * Windows Media Player
      * Quick Time
      * Apple iTunes
      * Videolan
      * Winamp
      * XMMS
      * Zinf

### Protocolos de transporte

      * TCP
      * UDP

### Protocolos de control de sesión

      * RTCP
      * RTP
      * HTTP
      * MMS
      * RTSP

## Tipos de transmisión de datos

Hay diferentes maneras de transmitir el flujo de datos en la reproducción a tiempo real:
* Unicast: El flujo de datos va desde un servidor a un cliente en particular que haya solicitado la reproducción del archivo. Usa los protocolos TCP, RTP, RTSP, HTTP Live Streaming y RTSP sobre UDP.
* Multicast: El flujo de datos va desde un servidor a varios clientes a la vez que hayan solicitado la reproducción del archivo. Usa el protocolo IGMP.
* Broadcast: El flujo de datos va desde un servidor hasta todos los clientes de la red a la vez aunque no hayan solicitado la reproducción del archivo. Usa el protocolo UDP.
* P2P/BitTorrent: El flujo de datos va desde un servidor semilla a los clientes que hayan solicitado la reproducción del archivo, que a la vez también se convierten en distribuidores. Usa arquitecturas P2P y Torrente.