Comment implémenter le serveur HTTP Live Streaming sous Unix?
Je viens de réaliser que Apple requis la diffusion HTTP en Direct afin de visualiser des vidéos dans les applications de l'iPhone. Je n'étais pas au courant de cela avant... je suis maintenant essayer de comprendre ce que cela implique afin que je puisse décider si je veux faire le travail et rendre les vidéos disponibles en 3G ou limite de lecture vidéo pour les utilisateurs qui sont connectés à un réseau wi-fi.
J'ai lu le aperçu fourni par Apple, et maintenant comprendre que mon serveur a besoin de segmenter et de l'index de mes fichiers multimédias. Je comprends aussi que je n'ai pas d'héberger le contenu pour être en mesure de les lire (je peux signaler une vidéo hébergée quelque part d'autre, non?).
Ce n'est pas clair pour moi à ce stade est de savoir quoi mettre en œuvre sur mon serveur (Ubuntu Hardy) pour faire le segmentation et indexation à la volée (une fois de plus, je ne suis pas d'héberger les vidéos je veux le servir).
J'ai trouvé un lien de vous expliquer comment installer FFmpeg et X264, mais je ne sais pas si c'est la meilleure solution (depuis que j'ai un serveur Ubuntu, je ne peux pas utiliser la Apple en Direct Streaming outils, est-il correct?). Aussi, je ne comprends pas à quel point mon serveur sait qu'une vidéo a besoin d'être converti et commence le travail...
Tous les commentaires qui pourraient m'aider à comprendre exactement ce qu'il faut faire sur le serveur, afin d'être en mesure de diffuser des vidéos sur mon iPhone en 3G serait grandement apprécié! (Oh, et cela fait une différence, mon application back-end est dans les Rails)
source d'informationauteur alex
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez diffuser du contenu en direct à partir de votre webcam : FMLE ( flash media live encoder )
Si vous souhaitez diffuser du contenu statique (film) : ffmpeg & xuggle
red5:
Vous media server pourrait être red5 ( open-source et gratuit) ou FMS ou wowza. Mais j'ai utilisé seulement red5, je ne sais pas pour les autres. Vous pouvez trouver red5 ici.
Vous serveur peut être n'importe où, mais vous aurez besoin d'ouvrir un port (1935 pour rtmp au moins ) , 5080 pour "panneau d'administration", vous avez pu voir 9999 dans la liste. ( Consultez la doc ) Red5 est un serveur de médias en java, de sorte que vous aurez besoin de java jdk >= 1.6.
Red5 1.0 RC peut être trouvé ici. Vous pouvez trouver une version pour windows, osx ou linux. J'ai utilisé la version tarball. Extraire et exécuter "red5.sh". Vous devriez être en mesure d'accéder à l'admin à http://localhost:5080/ et vous devriez également voir une vidéo en cours d'affichage. Si non, quelque chose de mal et vous ne pouvez pas aller plus loin jusqu'à ce que cela fonctionne.
Flux avec ffmpeg:
Vous pouvez trouver xuggle ici et vous pouvez trouver plus d'informations sur ce ici
Garder à l'esprit que si vous voulez le lire sur le web que flv et mp4 peut jouer dans flash player ( je pense ). Une fois que c'est le streaming, vous devriez être capable de voir dans le "panneau d'administration" ici. Se connecter à votre serveur (rtmp://localhost/live/) et allez dans l'onglet affichage et de mettre "livestream". Vous pouvez utiliser mplayer rtmp://localhost/live/livestream de voir votre vidéo.
flux dans un lecteur flash:
Vous pouvez utiliser le lecteur (avec le rtmp plugin) ou jwplayer.
Il existe plusieurs technologies concurrentes, mais aujourd'hui, si vous voulez tous les fichiers compatibles pour le streaming sur les appareils Apple (iphone, ipad, etc) puis HLS est le chemin à parcourir. D'ailleurs, il est également pris en charge par la plupart des navigateurs et Android donc pas un mauvais endroit pour commencer. Notez cependant qu'il n'est pas approprié pour la diffusion de contenu en direct malgré le nom.
Sauf si vous voulez la vidéo en direct, vous N'avez PAS vraiment besoin red5 ou wowza ou fms ou quelque chose comme ça. HLS est essentiellement un ensemble de courtes séquences vidéo (par exemple, 5 minutes chacun) codée différents débits et une liste de lecture m3u-vous donner à votre flash ou HTML5 basé player dans le navigateur. C'est à vous de décider de la longueur du segment ou de la façon dont vous l'encoder.
C'est le meilleur article que j'ai vu sur la façon de choisir les résolutions, le débit binaire, la taille de segment, etc: http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Adaptive-Streaming-in-the-Field-73017.aspx
À partir de là que vous venez par exemple de créer une structure de répertoire, par exemple
Alors vous avez besoin de générer une liste de lecture m3u pour tous les morceaux et les qualités et c'est le joueur lui-même pour mettre en œuvre la commutation entre les qualités et de jouer le fichier suivant (dont la plupart des joueurs modernes ont déjà).
Aussi je vous recommande vivement de vérifier: https://developer.apple.com/resources/http-streaming/ - Apple de fournir un ensemble d'outils gratuits pour préparer les vidéos et listes de lecture pour la diffusion HTTP en Direct.
La façon la plus simple de flux HLS est d'utiliser quelque chose comme Wowza ou FMIS (qui ne venir pas cher). Wowza prendra de l'entrée (soit en direct et en streaming ou stockées VOD de contenu et de faire de la segmentation à la volée.