Vidéo HTML5: comment tester la capacité de lecture HLS? (vidéo.canPlayType)

j'ai la vidéo qui est livrée sur HLS. Maintenant, j'aimerais tester en JavaScript si L'appareil peut réellement lire la vidéo HLS en HTML5.

habituellement en Javascript j'ai fait quelque chose comme document.createElement('video').canPlayType('video/mp4') Cependant, je ne peux pas comprendre quel "type" est le bon pour HLS.

Apple Safari HTML5 Audio and Video Guide semble suggérer "vnd.Apple.mpegURL" ("Listing 1-7 revenir à un plug-in pour IE")

<video controls>
    <source src="HttpLiveStream.m3u8" type="vnd.apple.mpegURL">
    <source src="ProgressiveDowload.mp4" type="video/mp4">
....

mais canPlayType("vnd.apple.mpegURL") retour vide string même sur les appareils iOS qui peuvent jouer des flux HLS réels parfaitement bien.

y a-t-il un moyen de vérifier les capacités de lecture sans "connaissance externe"(par exemple "vérifier l'agent utilisateur iOS et supposer qu'il peut lire hls")?

je sais que je peux spécifier plusieurs sources dans un élément et le navigateur utilisera la première source jouable. Cependant, dans mon cas, j'ai besoin d'une URL unique pour JW Player que je ne peux pas modifier. Donc d'une certaine façon je dois trouver la "meilleure URL jouable" à partir d'un ensemble de la vidéo encodages. (Une bibliothèque JS open source qui gère la sélection des sources serait une bonne solution.)

19
demandé sur Felix Schwarz 2012-09-13 19:48:33

1 réponses

Je n'ai pas testé cela à tous les niveaux, mais il semble que vous devriez tester pour le mimetype HLS complet application/vnd.apple.mpegURL au lieu de juste juste vnd.apple.mpegURL.

application/x-mpegURL et audio/mpegurl sont également des mimétypes appropriés pour le fichier HLS m3u8. audio/x-mpegurl est également répertorié comme un type de mime acceptable selon Apple, mais il ne semble pas être mentionné dans le projet de spécification HLS réelle.

Dans Safari sur iOS et OS X,

document.createElement('video').canPlayType('application/vnd.apple.mpegURL')

retourne maybe. Je ne sais pas si il y sont d'autres navigateurs qui prennent en charge HLS -- Android ne semble pas aimer cette syntaxe (malgré certaines affirmations que j'ai vu le contraire), et je crois que cela peut être dû au fait que la lecture vidéo réelle est déléguée à une application externe, plutôt que le navigateur m'.

Références:

  1. http://developer.apple.com/library/ios/#technotes/tn2235/_index.html
  2. http://www.longtailvideo.com/html5/hls
  3. http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
  4. http://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Using_HTML5_Audio_Video.pdf
17
répondu schmod 2013-06-07 22:20:01