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.