5

VideoJSSWFObjectを使用して動画を埋め込みます。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 によって埋め込まれたコードにフォールバックしないことです。しかし、なぜ?

4

1 に答える 1

2

videojs には、フォールバックとしてビルドインのフラッシュサポートが既に組み込まれています。独自のフラッシュ プレーヤーを使用する場合は、次のようにオプションで変更できます。

<script type="text/javascript">
  VideoJS.options.flash.swf = "pathtoyourplayer.swf";
  VideoJS.options.flash.flashVars = {youroptions};
  VideoJS.options.flash.params = {youtparams};
  VideoJS.options.flash.attributes = {yourattributes};
</script>

..

<video ...>
  <source src=".." type="video/mp4" />
</video>

追加: swfObject はすでに videojs に含まれています。

于 2012-01-23T16:28:53.413 に答える