VideoJSとSWFObjectを使用して動画を埋め込みます。VideoJS は HTML5 ビデオ タグを使用しようとし、サポートされていない場合は Flash にフォールバックするという考えです。SWFObject を使用して Flash を埋め込み、フォールバックとして使用しようとしています。関連するコードは次のとおりです。
<ul id="client_gallery">
<% if PortfolioMedia %>
<% control PortfolioMedia %>
<% if VideoFile %>
<li style="width:{$VideoWidth}px;height:{$VideoHeight}px">
<div class="video-js-box">
<video class="video-js" width="$VideoWidth" height="$VideoHeight" controls preload>
<source src="$VideoFile.URL" type="video/mp4" />
<div id="flash_player"></div>
<script type="text/javascript">
var flashvars = {
'file': "$VideoFile.URL"
};
var params = {
'allowfullscreen': "true",
"wmode": "transparent"
};
var attr = {
'id': 'f_player',
'name': 'f_player'
};
swfobject.embedSWF('/portfolio/javascript/jwplayer/player.swf', 'flash_player', '$VideoWidth', '$VideoHeight', '9', '', flashvars, params, attr, function(e){
});
</script>
</video>
</div>
</li>
<% end_if %>
<% end_control %>
<% end_if %>
<script type="text/javascript">
$(function(){
VideoJS.setupAllWhenReady();
});
</script>
</ul>
もう 1 つの表記は CMS Silverstripe によるもので、この号では関係ありません。これは、Chrome、Safari、および IE では正常に機能しますが、Firefox では機能しません。Firefox では、タグを使用しようとした<video>
が、互換性のあるソースを読み込めなかったかのように、空のコンテナしか表示されません。
Flash はまったく埋め込まれていません<video>
。タグ内ではなく、swfobject コードのみを使用すると完全に機能するため、swfobject コードが機能していることはわかっています。問題は、VideoJS が swfobject によって埋め込まれたコードにフォールバックしないことです。しかし、なぜ?