57 votes

La diffusion HTTP en Direct

Ok, j'ai été d'essayer d'envelopper ma tête autour de ce le http live streaming. Je ne comprends pas, et oui j'ai lu tous les apple docs et regardé la wwdc vidéos, mais toujours super confus, de sorte s'il vous plaît aider une envie d'être programmeur, dehors!!!

Le code que vous écrivez va sur le serveur? pas dans xcode? Si je suis en droit comment puis-je le configurer? Dois-je configurer quelque chose de spécial sur mon serveur? comme php ou quelque chose? Comment utiliser les outils fournis par Apple.. segmenter et tel?

Merci de m'aider, Merci

138voto

Jano Points 37593

La diffusion HTTP en Direct

Le HTTP Live Streaming est streaming standard proposé par Apple. Voir le dernier projet de norme.

Les fichiers concernés sont

  • .m4a pour l'audio (si vous voulez un flux audio seulement).
  • .ts pour la vidéo. C'est un MPEG-2 transport, généralement avec un h.264/AAC charge utile. Il contient 10 secondes de vidéo et il est créé par la division de votre fichier vidéo d'origine, ou par la conversion de la vidéo en direct.
  • .m3u8 pour la liste de lecture. C'est une version UTF-8 de la WinAmp format.

Même quand il est appelé en direct streaming, il ya généralement un délai d'une minute au cours de laquelle la conversion de la vidéo, le ts et m3u8 les fichiers écrits, et votre client actualiser le fichier m3u8.

Tous ces fichiers sont des fichiers statiques sur votre serveur. Mais dans les événements en direct, de plus en plus .ts fichiers sont ajoutés, et le m3u8 fichier est mis à jour.

Depuis que vous avez marqués à cette question, iOS, il est pertinent de mentionner liées App Store règles:

  • Vous ne pouvez utiliser que le téléchargement progressif pour les vidéos de moins de 10 minutes ou 5 MO toutes les 5 minutes. Sinon, vous devez utiliser le HTTP Live Streaming.
  • Si vous utilisez le HTTP Live Streaming, vous devez fournir au moins un flux à 64 kbits / s ou plus faible largeur de bande (la bande passante faible de flux peuvent être uniquement audio ou audio avec une image fixe).

Exemple

Obtenez les outils de lecture

Pour télécharger le HTTP Live Streaming Outils de cela:

Outils de ligne de commande installé:

 /usr/bin/mediastreamsegmenter
 /usr/bin/mediafilesegmenter
 /usr/bin/variantplaylistcreator
 /usr/bin/mediastreamvalidator
 /usr/bin/id3taggenerator

Les Descriptions de la page de man:

  • Les médias de Flux de Segmenter: Créer des segments de MPEG-2 Transport stream pour la diffusion HTTP en Direct.
  • Fichier multimédia Segmenter: Créer des segments pour la diffusion HTTP en Direct à partir de fichiers multimédias.
  • La variante de la Playlist Creator: Créer une liste de lecture pour la commutation flux de diffusion HTTP en Direct les segments créés par mediafilesegmenter.
  • Flux des médias Validator: Valide la diffusion HTTP en Direct des ruisseaux et des serveurs.
  • ID3 Tag Generator: Créer des balises ID3.

Créer la vidéo

Installer Macports, aller à la borne et sudo port install ffmpeg. Puis convertir la vidéo en flux de transport (.ts) à l'aide de cette FFMpeg script:

# bitrate, width, and height, you may want to change this
BR=512k
WIDTH=432
HEIGHT=240
input=${1}

# strip off the file extension
output=$(echo ${input} | sed 's/\..*//' )

# works for most videos
ffmpeg -y -i ${input} -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s ${WIDTH}x${HEIGHT} -vcodec libx264 -b ${BR} -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate ${BR} -bufsize ${BR} -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect ${WIDTH}:${HEIGHT} -g 30 -async 2 ${output}-iphone.ts

Cela va générer un .fichier ts. Maintenant nous avons besoin de diviser les fichiers en segments et de créer une liste de lecture contenant tous les fichiers. Nous pouvons utiliser d'Apple mediafilesegmenter pour ce:

mediafilesegmenter -t 10 myvideo-iphone.ts

Cela va générer un .ts fichier pour chaque 10 secondes de la vidéo, plus un .m3u8 fichier de pointage à l'ensemble d'entre eux.

Installation d'un serveur web

Pour jouer un .m3u8 sur iOS nous pointez sur le fichier avec le navigateur safari mobile. Bien sûr, nous avons d'abord besoin de les mettre sur un serveur web. Pour Safari (ou un autre joueur) pour reconnaître les fichiers ts, nous avons besoin d'ajouter ses types MIME. Dans Apache:

 AddType application/x-mpegURL m3u8
 AddType video/MP2T ts

Dans lighttpd:

 mimetype.assign = ( ".m3u8" => "application/x-mpegURL", ".ts" => "video/MP2T" )

Pour lier cela à partir d'une page web:

<html><head>
    <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head><body>
    <video width="320" height="240" src="stream.m3u8" />
</body></html>

Pour détecter l'orientation du périphérique voir de Détecter et de Définir les iPhone et iPad de la Fenêtre d'affichage de l'Orientation à l'Aide de JavaScript, CSS et les Balises Meta.

Plus de choses que vous pouvez faire est de créer débit binaire différent des versions de la vidéo, intégration des métadonnées de le lire tout en jouant comme des notifications, et bien sûr avoir du plaisir à programmer avec le MoviePlayerController et AVPlayer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X