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

J'ai une vidéo qui est livrée sur HLS. Maintenant, je voudrais tester en JavaScript si le périphérique peut effectivement 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.

Le Guide audio et vidéo HTML Safari d'Apple Safari semble suggérer "vnd.apple.mpegURL" ("Liste 1-7 Revenant à 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") renvoie une chaîne vide même sur les périphériques iOS qui peuvent jouer correctement les flux HLS réels.

Existe-t-il un moyen de vérifier les capacités de lecture sans «connaissances externes» (p. Ex., «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 que le navigateur utilisera la première source jouable. Cependant, dans mon cas, j'ai besoin d'alimenter une seule URL vers 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 d'encodages vidéo. (Une bibliothèque JS open source qui gère la sélection de la source serait cependant une bonne solution de contournement).

Je n'ai pas testé cela dans l'ensemble, mais il semble que vous devriez tester l' application/vnd.apple.mpegURL HLS application/vnd.apple.mpegURL au lieu de simplement vnd.apple.mpegURL .

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

Dans Safari sur iOS et OS X,

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

Retourne maybe . Je ne suis pas sûr s'il y ait d'autres navigateurs qui prennent en charge HLS. Android ne semble pas aimer cette syntaxe (malgré certaines affirmations que j'ai vus au 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 lui-même.

Les 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