23

HLS 経由で配信されるビデオがあります。デバイスが実際に HTML5 で HLS ビデオを再生できるかどうかを JavaScript でテストしたいと思います。

通常、Javascript では次のようなことを document.createElement('video').canPlayType('video/mp4') 行いましたが、どの「タイプ」が HLS に適しているかわかりません。

Apple の Safari HTML5 Audio and Video Guideは、"vnd.apple.mpegURL" ("Listing 1-7 Falling to a plug-in for IE") を提案しているようです。

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

ただしcanPlayType("vnd.apple.mpegURL")、実際の HLS ストリームを完全に正常に再生できる iOS デバイスでも空の文字列を返します。

「外部知識」なしで再生機能を確認する方法はありますか (たとえば、「iOS ユーザー エージェントを確認し、それが hls を再生できると想定する」など)?

1 つの要素に複数のソースを指定でき、ブラウザは最初の再生可能なソースを使用することを知っています。ただし、私の場合、変更できない単一の URL を JW Player にフィードする必要があります。どういうわけか、一連のビデオ エンコーディングから「再生可能な最適な URL」を見つける必要があります。(ただし、ソースの選択を処理するオープン ソースの JS ライブラリは、優れた回避策になります。)

4

1 に答える 1

25

私はこれを一律にテストしていませんが、application/vnd.apple.mpegURL単にvnd.apple.mpegURL.

application/x-mpegURLまたaudio/mpegurl、HLS m3u8 ファイルに適した MIME タイプです。 audio/x-mpegurlも Apple によれば許容可能な MIME タイプとしてリストされていますが、実際の HLS ドラフト仕様では言及されていないようです。

iOS および OS X の Safari では、

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

戻りますmaybe。HLS をサポートする他のブラウザーがあるかどうかはわかりません -- Android はこの構文を好まないようです (私が見た反対の主張にも関わらず)。実際のビデオ再生は、ブラウザ自体ではなく、外部アプリケーションに委任されます。

参考文献:

  1. http://developer.apple.com/library/ios/#technotes/tn2235/_index.html
  2. http://www.longtailvideo.com/html5/hls
  3. https://datatracker.ietf.org/doc/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
于 2012-10-15T22:52:39.850 に答える