mozilla/popcorn-js

playbackRate() not implemented for HTMLYouTubeVideoElement

Opened this issue · 2 comments

The YouTube player API offers the following hooks for adjusting the playback rate. If no one beats me to this, my plan will be to circle back in ~48 hours and create a pull request that adds this the wrapper.

https://developers.google.com/youtube/js_api_reference

player.getPlaybackRate();
player.setPlaybackRate(suggestedRate);
player.getAvailablePlaybackRates();

I tried this ages ago, and found that in most cases getAvailablePlaybackRates would only return an array of 1. :(

I'm not sure if you guys ever got this working or not, but I was just experimenting with this too. In popcorn-complete.js 1.5.6, HTMLYouTubeVideoElement, line 6479: Object.defineProperties, I just added a getter and setter for playbackRate and getAvailablePlaybackRates:

  playbackRate: {
    get: function() {
      return player.getPlaybackRate();   
    },
    set: function( aValue ) {
      player.setPlaybackRate(aValue);
      self.dispatchEvent( "ratechange" );
    }
  },

  availablePlaybackRates: {
    get: function() {
      return player.getAvailablePlaybackRates();
    }
  },

The videos I have been looking at tend to have available playback rates of [0.25, 0.5, 1, 1.25, 1.5, 2]. I know YouTube doesn't provide this for all videos though, so you should check the list before setting a new playbackRate.

You can then change the playbackRate using e.g:

var rate = popcornElement.media.availablePlaybackRates[0];
popcornElement.media.playbackRate = rate;

Does that work for you too?