Jouer m3u8 Fichiers HTML Balise Vidéo
Je suis en train d'utiliser le HTTP Live Streaming (HLS) pour diffuser de la vidéo à mes ordinateurs et mon iPhone. Après la lecture par le biais de la Pomme "HTTP Live Streaming Aperçu", ainsi que "les Meilleures Pratiques pour la Création et le Déploiement de la diffusion HTTP en Direct des Médias pour l'iPhone et l'iPad", je suis un peu coincé.
J'ai pris mon fichier source (un mkv) et utilisé ffmpeg pour encoder le fichier MPEG-TS format de pommes et les paramètres recommandés et une base de Référence 3.0 profil:
ffmpeg -i "example.mkv" -f mpegts -threads:v 4 -sws_flags bicubic -vf "scale=640:352,setdar=16/9,ass=sub.ass" -codec:v libx264 -r 29.970 -b:v 1200k -profile:v baseline -level:v 3.0 -movflags faststart -coder 1 -flags +loop -cmp chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 239 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -direct-pred 1 -fast-pskip 1 -af "aresample=48000" -codec:a libvo_aacenc -b:a 96k -ac 2 -y "output.ts"
Pas de soucis là-bas. J'ai utilisé un pré-compilé la segmentation de l'outil pour le segment de la vidéo et de construire un .m3u8 liste de lecture. La résultante de fichier ressemble à ceci:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://localhost/media/stream/stream-1.ts
#EXTINF:10,
http://localhost/media/stream/stream-2.ts
#EXTINF:10,
http://localhost/media/stream/stream-3.ts
#EXT-X-ENDLIST
J'ai vérifié que contre certains Exemple de Fichiers de listes de lecture pour une utilisation avec la diffusion HTTP en Direct, et je ne vois pas de problèmes. J'ai aussi essayé de jouer la .m3u8 fichier de VLC, et il fonctionne comme un charme.
J'ai créé une page HTML pour lire le fichier:
<html lang="en">
<head>
<meta charset=utf-8/>
</head>
<body>
<div id='player'>
<video width="352" height="288" src="stream.m3u8" controls autoplay>
</video>
</div>
</body>
</html>
Et cette page ne fonctionne pas dans Chrome, Safari sur mon iPhone. La balise vidéo html5 exemples sur w3schools fonctionner sur mon ordinateur, et l'officiel d'Apple aperçu mentionné ci-dessus donne un exemple de code HTML, très proche de ma page. Néanmoins, mon lecteur vidéo est complètement insensible lorsque je visite mon propre .m3u8 page.
- Pouvez-vous montrer à la sortie de la mediastreamvalidator outil?
- Merci pour la réponse! Malheureusement, je n'ai pas déboursé plus de l'argent pour être un "vrai" développeur Apple, donc je n'ai pas cet outil particulier. J'ai été à la recherche d'un probable suppléant avec peu de succès. Quels conseils donneriez-vous à ce sujet serait la bienvenue!
- Peut-être pourrais-tu mettre les fichiers sur un serveur web public. Vous pouvez utiliser un micro instance Amazon EC2 si vous avez besoin d'un free serveur. Alors quelqu'un ayant accès à plus d'outils pourrait prendre un coup d'oeil. En fait, cela m'interroge sur les types mime être retourné par votre serveur... Voir si cela peut vous aider: stackoverflow.com/questions/6438680/...
- Avez-vous essayé de navigation directement à la m3u8 sur votre safari, et non via le html? par exemple, si votre fichier m3u8 existe sur le serveur sous monserveur/mymoviue.m3u8, puis navigation ici devrait afficher la vidéo. Si cela ne fonctionne pas, alors votre problème n'est pas dans le HTML.
Vous devez vous connecter pour publier un commentaire.
Peut-être un peu en retard à la réponse, mais vous devez fournir le type MIME de l'attribut dans la balise video: type="application/x-mpegURL". La balise vidéo j'ai utilisé pour un 16:9 ruisseau ressemble à ceci.
Vous pouvez utiliser vidéo js bibliothèque pour jouer facilement HLS vidéo.
Il permet de lire des vidéos directement
GitHub Vidéo Js
Flux HLS ou m3u8 fichiers à l'aide de code ci-dessus.
il travaille pour le bureau: ms bord navigateur (pas de travail de bureau avec chrome)
et
mobile: chrome,opera mini navigateur.
Pour jouer sur tous les navigateur utiliser flash media player.
media player pour soutenir tous les navigateurs
L'ajout de ben.bourdin réponse, vous pouvez au moins dans tout code HTML en fonction de l'application, vérifier si le navigateur prend en charge le protocole HLS dans son élément vidéo:
Permet de supposer que votre vidéo ID de l'élément est "myVideo", puis à l'aide de javascript, vous pouvez utiliser le bouton "canPlayType" fonction (http://www.w3schools.com/tags/av_met_canplaytype.asp)
La canPlayType fonction retourne:
"" quand il n'y a pas de support pour l'audio/vidéo de type
"peut-être" quand le navigateur pourrait soutenir le spécifiée audio/vidéo de type
"probablement" lorsqu'il est probable qu'il prend en charge l'audio spécifié/type de vidéo (vous pouvez utiliser cette valeur dans la validation pour être plus sûr que votre navigateur prend en charge le type spécifié)
Espère que cela aide 🙂
En ce qui concerne meilleur!
Utilisation Flowplayer:
Différentes méthodes sont disponibles dans flowplayer.org site web.
api
ici?<script> flowplayer(function(api) {...
affiche media player sceen dans le navigateur. Pourquoi? Quelque chose s'est mal passé dans les balise de script? Quelqu'un peut-il m'aider?