2011-09-17 8 views
23

私はビデオタグを使用してHTML5でアプリケーションを作成していますが、アプリケーションではユーザーがビデオファイルを選択してそのファイルを再生します。これはすべて、ユーザーのマシン内のそのファイルにのみリンクするため、ローカルで行われます。HTML5ビデオタグのサポートされている動画形式を検出するにはどうすればよいですか?

ブラウザで再生できるフォーマットのみをアプリケーションで再生できるようにし、サポートされていないフォーマットでエラーを表示することを許可します。問題は、さまざまなブラウザが異なるフォーマットを再生できることです。

私はブラウザを確認して、それが再生できるとわかっているフォーマットに一致させることができますが、ブラウザが別のフォーマットをサポートするように更新するとどうなりますか?アプリケーションを新しい情報で更新する必要がありますが、サポートされているフォーマットを再生することはできません。サポートされているビデオフォーマットだけをチェックする方法はありますか?

答えて

45

異なるビデオタイプのコーデックをHTMLVideoElement.prototype.canPlayTypeで確認できます。優れたHTML5機能検出ライブラリModernizrもあります。

var testEl = document.createElement("video"), 
    mpeg4, h264, ogg, webm; 
if (testEl.canPlayType) { 
    // Check for MPEG-4 support 
    mpeg4 = "" !== testEl.canPlayType('video/mp4; codecs="mp4v.20.8"'); 

    // Check for h264 support 
    h264 = "" !== (testEl.canPlayType('video/mp4; codecs="avc1.42E01E"') 
     || testEl.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')); 

    // Check for Ogg support 
    ogg = "" !== testEl.canPlayType('video/ogg; codecs="theora"'); 

    // Check for Webm support 
    webm = "" !== testEl.canPlayType('video/webm; codecs="vp8, vorbis"'); 
} 
+1

これは私を非常に助けてくれました、ありがとう。なぜ私はmp4の2つのテストが好奇心ですか? H264は私が信じるmp4の一種で、mp4やwebmのサポートをテストしています。 – edwinbradford

+0

ここに正確なソースコードへのリンクがあります:https://github.com/Modernizr/Modernizr/blob/master/feature-detects/video.js – BishopZ

+1

これは、[Constrained Baseline Level 3 H. 264のサポート](http://stackoverflow.com/questions/16363167/html5-video-tag-codecs-attribute#answer-16365526)。 –

1

http://videojs.com/のようなものを使用することをお勧めします。彼らはフラッシュフォールバックを使用し、その構文はすべてのブラウザで使用する正しい形式の書式を提供します。

それはこのように書き:

<a href="http://video-js.zencoder.com/oceans-clip.mp4">MP4</a>, 
<a href="http://video-js.zencoder.com/oceans-clip.webm">WebM</a>, 
<a href="http://video-js.zencoder.com/oceans-clip.ogv">Ogg</a> 

ブラウザはMP4を理解していない場合、それはWebMのに行く、それはそれを理解していない場合、それはそれは、OGGに行くしない場合は、それが行きますフラッシュフォールバックに

CSSのfont-family宣言のように考えてください。

+0

これは正解ではありません。ブラウザがソースの種類を確認し、理解できない場合は次のソースを順番に試してみます(フォールバックとして追加した場合はFlashを使用することもあります)が、ビデオを考慮する必要があります**コーデック**。ビデオタイプのコーデックを明示的に指定しないと、ブラウザはビデオタイプ**を知っていますが、利用できない**コーデック**サポートのために失敗する可能性があります。この場合、ブラウザは次のソースを読み込もうとしません。 –

+0

コーデックのマークアップを表示するためのコード例には、「

関連する問題