# HTTP Live Streaming

L'HTTP Live Streaming és un protocol que permet enviar àudio i vídeo en temps real a través d'HTTP i d'un servidor web convencional. Qualsevol dispositiu que inclogui iPhone OS 3.0 o posterior, o a qualsevol ordinador amb QuickTime X pot reproduir l'àudio i el vídeo.

## Funcionament

La transmissió en temps real, en directe o de fitxers enregistrats, és possible gràcies a l'adaptació del vídeo en el servidor i un programari, QuickTime per a Mac OS X i iTunes per a iPhone OS, en el client que interpreta aquest vídeo.
L'adaptació consisteix a segmentar el vídeo en fragments d'igual duració i generar un fitxer, índex, que conté les localitzacions i l'ordre d'aquests fragments. A partir d'aquest fitxer el reproductor pot descarregar-se tots els arxius i reproduir-los.
El client accedirà a aquest fitxer índex, que especifica la localització dels arxius multimèdia disponibles, i que utilitzarà per a descarregar els diferents arxius de la seqüència de vídeo. Quan tingui una quantitat suficient de dades emmagatzemades en buffer, podrà muntar la seqüència i presentar-la a l'usuari de forma contínua, sense pauses ni espais en blanc entre els segments.

## Arquitectura

HTTP Live Streaming utilitza un servidor web convencional per a distribuir els continguts audiovisuals i requereix programari específic per a adaptar-lo en el format adequat per la transmissió en temps real. L'arquitectura del servei es compon de:
* Servidor: codifica i encapsula el flux de vídeo d'entrada en un format adequat per a l'entrega. Després el prepara per a la distribució segmentant-lo en diferents arxius.
* Distribuïdor: format per servidors web estàndard accepta sol·licituds del client i entrega tots els recursos necessaris per a la reproducció en temps real a aquest.
* Client: sol·licita i descarrega tots els arxius i recursos, muntant-los de manera que es puguin presentar a l'usuari com un flux de vídeo continu.

### Components del distribuïdor

El distribuïdor consisteix en un servidor web que envia els fitxers fragmentats i el fitxer índex a través de HTTP al client.
* Servidor web: accepta les sol·licituds del client i envia els fitxers necessaris per a la reproducció en temps real. Aquest requereix una codificació especial per a permetre la distribució de fitxers MPEG-2 TS i el fitxer índex.

### Programari client

El programari del client descarrega primer el fitxer índex a través d'una adreça URL i seguidament els diferents arxius multimèdia disponibles. El programari de reproducció munta la seqüència i permet la visualització continua a l'usuari. S'utilitza programari diferent per a ordinadors d'escriptori i dispositius mòbils:
* iTunes d'iPhone 3.0 o superior per a iPhone, iPod Touch i iPad.
* QuickTime X per a ordinadors d'escriptori.

## Escalabilitat i protecció contra errors

HTTP Live Streaming ofereix mecanismes per a proporcionar un servei escalable i adaptable a la xarxa, permeten la reproducció en més qualitat en xarxes Wi-Fi d'elevada amplada de banda, i la reproducció en menor qualitat en xarxes 3G, on l'amplada de banda és més reduïda. HTTP Live Streaming també permet protecció contra errors, generant diferents fluxos de vídeo alternatius per a utilitzar-los si hi ha errors en algun segment.

### Escalabilitat

Perquè el sistema sigui escalable i adaptable a l'amplada de banda de la xarxa, es codifica el flux de vídeo en diferents qualitats. Així, depenent de l'amplada de banda i de les velocitats de transferència de la xarxa es reproduirà el vídeo amb major o menor qualitat.
Per a implementar aquest sistema cal codificar el vídeo en diferents qualitats i generar un fitxer índex que contingui les localitzacions dels índexs a les diferents qualitats.
El programa client gestiona internament les diferents qualitats, realitzant les peticions a la qualitat més gran possible dins l'amplada de banda de la xarxa. D'aquesta manera sempre es reprodueix el vídeo a la qualitat més gran possible, visualitzant una qualitat menor en les xarxes 3G i una qualitat màxima en xarxes Wi-Fi de banda ampla.

### Protecció contra errors

La protecció contra errors funciona de manera similar a l'escalabilitat. En aquest cas es generen, per una mateixa qualitat diferents fluxos de vídeo i s'indiquen les localitzacions dins el fitxer índex.
La gestió de tots els arxius es realitza des del client, de manera que si falla el primer flux, s'utilitzarà el següent, i així successivament.
HTTP Live Streaming també permet combinar la protecció d'errors i l'escalabilitat. En aquest cas es genera un fitxer índex que contingui, per a cada amplada de banda els diferents fluxos de vídeo alternatius.

## Vegeu també

* Ustream