1

videojsのクイックスタートガイドに従い、次のコードをhtmlドキュメントの本文に配置しました。

<video id="video" class="video-js vjs-default-skin" controls width="941" 
      height="531" autoplay preload="auto" data-setup="{}">
  <source type="video/mp4" src="dummy_url">
</video>

すべて正常に動作します。自動再生とコントロールが適切に行われます。

ビデオの終了時にビデオを削除する必要があったため、ビデオタグの直後に次のコードを配置しました。

<script type="text/javascript">
    _V_("video").addEvent("ended", videoEnd);

    function videoEnd(){
        $('#divId').slideToggle("slow");
        setTimeout("$('#divId').remove()", 700);
    }
</script>

問題は、ビデオを検出しようとするたびに、自動再生が機能しなくなることです。次の場合でも、自動再生はトリガーされません。

<script type="text/javascript">
    _V_("video").ready(function(){

        var myPlayer = this;

        // EXAMPLE: Start playing the video.
        myPlayer.play();

    });

    _V_("video").addEvent("ended", videoEnd);

    function videoEnd(){
        $('#divId').slideToggle("slow");
        setTimeout("$('#divId').remove()", 700);
    }
</script>

自動再生を維持し、終了したイベントを聞く方法について何かアイデアはありますか?

4

2 に答える 2

1

まあ、これが最も正しい実装かどうかはわかりませんが、

<video id="video" class="video-js vjs-default-skin" controls 
     width="941" height="531" autoplay preload="auto" data-setup="{}">
     <source type="video/mp4" src="dummy_url">
</video>

<script type="text/javascript">
    interval = setInterval(videoLoaded, 100);

    function videoEnd(){
            $('#someid').slideToggle("slow");
            setTimeout("$('#someid').remove()", 700);
        }

    function videoLoaded(){
        if(!_V_.players.video){
            return false;
        }

        _V_.players.video.play();
        _V_.players.video.addEvent("ended", videoEnd);
        clearInterval(interval);
    }

</script>

私が読んだことから、代替手段はjsのみを介してビデオをロードすることです。

これは、videojs がビデオ オブジェクトを初期化する方法に問題があります (私が読んだものから)。詳細については、こちらをご覧ください

それがいくつかのバンパーに役立つことを願っています:)

于 2012-08-26T21:15:08.380 に答える
0

実際には、setTimeout 関数を使用して videoLoaded 関数を開始することをお勧めします。これは、プレーヤーを制御できないためです (必要な場合)。

于 2013-04-01T17:47:25.023 に答える