0

YouTube の動画を無音でループ再生させようとしています。次に、ユーザーがクリックして一時停止すると、ビデオが再開され、フル ボリュームで再生されます。

これが私が取ったアプローチです。

var flag = 1;
    var tag = document.createElement('script');
    tag.src = "http://www.youtube.com/player_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    var player;

    function onYouTubePlayerAPIReady() {
        player = new YT.Player('player', {
            playerVars: { 'autoplay': 1, 'controls': 1,'autohide':1,'wmode':'opaque' },
            videoId: '[CODE]',
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange,
            }
        });
    }

    function onPlayerReady(event) {
        event.target.playVideo();
        event.target.mute();
    }

    function onPlayerStateChange(event){
        //alert('State changing!');
        if (event.data == 0){
            alert('Play over');
            player = new YT.Player('player', {
                playerVars: { 'autoplay': 1, 'controls': 1,'autohide':1,'wmode':'opaque' },
                videoId: '[CODE]',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange,
                }
            });       
        }
        else if(event.data == 2)
        {   if(flag == 1)
            {
                alert('Play loud!');
                event.target.stopVideo(); 
                event.target.clearVideo(); 
                event.target.seekTo(0); 
                event.target.setVolume(100);
                flag = 4;
            }
        }
    }

私の問題は、ビデオが終了すると、event.data == 2再生終了 ( ) が発生する前に、一時停止 ( ) でonPlayerStateChange がトリガーされることevent.data == 0です。

これは自然なのか、それとも私だけなのか。「一時停止」が発火するのは意味がありませんか?

同様のアプローチをとったことがありますか?あなたが何をしたか分かりますか?

前もって感謝します。

4

1 に答える 1

1

終了状態の前に一時停止状態を開始することは、かなり標準的です。私が覚えている限り、それは起こっています。ただし、常にそのようにとどまる保証はありません。

于 2013-03-14T20:41:56.550 に答える