Đặng Quốc Trung
Đặng Quốc Trung

Reputation: 123

Get current state of Player (Youtube API)

is there any function to get the current state of the Youtube API player ? I want to write a function to run a command if player current state is 1 (playing), but i can't find anything on the reference page.
p/s: i already know the onStageChange, i need the check current state my create player code:

var player;
    window.onYouTubeIframeAPIReady = function () {
        console.log('onYouTubeIframeAPIReady');
        player = new YT.Player('video_player', {
            // playerVars: { 'enablejsapi':1,'autoplay':0,'controls':0,'rel':0,'showinfo':0,'egm':0,'showsearch':0,'modestbranding':1,'iv_load_policy':3,'disablekb':0,'loop':0},
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange,
                'onError': onPlayerError
            }
        });
    }

Upvotes: 3

Views: 5296

Answers (1)

dCrystal
dCrystal

Reputation: 604

# By onStateChange

The API triggers events to notify your application about changes to the built-in player. The API will pass an event object as unique for each of the following types of states:

  • YT.PlayerState.ENDED or 0
  • YT.PlayerState.PLAYING or 1
  • YT.PlayerState.PAUSED or 2
  • YT.PlayerState.BUFFERING or 3
  • YT.PlayerState.CUED or 5

Exemple:

   ...

   onPlayerStateChange(event) {

        if (event.data == YT.PlayerState.ENDED) {               
            console.log("Video Ended");
        }

        if (event.data == YT.PlayerState.PLAYING) {             
            console.log("Video Playing");
        }

        if (event.data == YT.PlayerState.PAUSED) {              
            console.log("Video Paused");
        }

        if (event.data == YT.PlayerState.BUFFERING) {               
            console.log("Video Buffering");
        }

        if (event.data == YT.PlayerState.CUED) {                
            console.log("Video Cued");
        }

    },

    ...

# By getPlayerState()

  var player;

  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '360',
      width: '640',
      videoId: 'M7lc1UVf-VE',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
  }

  console.log(player.getPlayerState());

The possible values for getPlayerState() are:

  • -1 – not iniciated
  • 0 – Ended
  • 1 – Playing
  • 2 – Paused
  • 3 – Buffering
  • 5 – Cued

Upvotes: 6

Related Questions