Question

Apple a inclus HTTP Adaptive Bitrate dans le streaming iPhone OS 3.0, en particulier gère cela automatiquement Safari.

Je voudrais jouer avec cette façon à faible coût, mais je pense qu'il va me falloir un serveur HTTP personnalisé dans le pire des cas, et PHP / etc script intéressant dans le meilleur des cas.

Mais d'abord, je dois savoir quelles sont les différences de protocole ou une norme est. HTTP est assez simple comme un protocole, mais le débit adaptatif signifie que la taille de fichier est différent, les emplacements de chunk sont différents à différents bitrates, etc. Par exemple, ce que le client dit au serveur quelque chose de spécial au sujet du flux comme il est le téléchargement, ou est-ce tous les traités sur le côté serveur?

L'élimination des pauses de mise en mémoire tampon pour l'utilisateur final est très attrayant pour les deux vivent et des flux vidéo pré-enregistrés, et de faire à la fois sur HTTP est encore mieux donné de nombreux réseaux et les gouvernements limitent le port non 80 trafic.

  • Quels sont les détails techniques pour le streaming à débit adaptatif HTTP, en particulier la mise en œuvre d'Apple?
  • Où est-ce mieux mis en œuvre - une partie du serveur HTTP lui-même, une partie d'un mod, dans un script ...

  • Quels sont les changements nécessaires pour le côté client, si l'on implémenter dans une application?

Était-ce utile?

La solution

Mise à jour

On dirait Apple a fait une proposition de projet de l'IETF, et certaines personnes travaillent déjà sur segmenteurs:

HTTP Live Streaming - projet-pantos-http-live streaming-01
http://tools.ietf.org/id/draft -pantos-http-live-streaming 01.txt

iPhone Streaming HTTP avec ffmpeg et un Open Source Segmenter
http: // www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/


On dirait que le serveur HTTP agit simplement comme un serveur HTTP muet. Farfouillé le site exemple fourni par Akamai me donne assez d'informations pour commencer à utiliser le streaming du contenu statique.

http://iphone.akamai.com/

Le livre blanc ( http://www.akamai.com/dl/akamai/iphone_wp pdf ) fournit des informations sur le flux de transport de codage, de sorte que les courants .ts sont simples.

  

Le codeur (ou un segmenteur séparé   processus) produira H.264 / AAC   contenu dans une séquence de faible teneur   segments, en format MPEG-2 TS (.ts).   Il y a aussi un fichier d'index qui M3U8   références les segments; dans le cas   du contenu en direct la M3U8 est   continuellement mis à jour pour refléter la   le dernier contenu.

     

L'encodage H.264 devrait être une seule passe   Profil de référence, réordonnancement cadre   désactivé. Les images clés sont proposées   toutes les 5 secondes, idéalement une même   diviseur de la longueur du segment sélectionné.

Le site Web fournit un fichier M3U8, qui est simplement une liste de lecture M3U, mais dans le jeu de caractères UTF-8 format de codage.

Ce fichier lie alors à un fichier M3U8 pour chaque bitrate. Je suppose qu'ils doivent tous avoir des coupes dans les mêmes positions (tous les 2 ou 10 secondes, par exemple), de sorte que la commutation peut être transparente. Il semble être complètement axée sur le client -. Le client décide comment mesurer la bande passante et quelle version il va obtenir

Le contenu du fichier principal sont:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
hi/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
med/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
lo/prog_index.m3u8

Alors chacun des autres fichiers sont:

salut / prog_index.m3u8

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXTINF:10, 
fileSequence2.ts
#EXTINF:10, 
fileSequence3.ts
#EXTINF:1,  
fileSequence4.ts
#EXT-X-ENDLIST

med / prog_index.m3u8

<video width="640" height="480">
   <source src="content1/content1.m3u8" />
</video>

lo / prog_index.m3u8

<*>

Cela fonctionne avec la balise vidéo HTML 5:

<*>

Il y a encore beaucoup de questions sans réponse, mais cela est probablement suffisant pour commencer.

Autres conseils

Et un petit joueur en Python + GStreamer http://code.google.com/ p / HLS-lecteur /

Voir ce pour un codeur open source et segmenteur et quelques autres trucs cool:)

http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top