1

私は自分のサイトでmediaelementplayerを使用して、YouTubeからいくつかのビデオを再生しています。自分のプレイリストを作成しました。プレイリスト内の任意のトラックをクリックすると、プレーヤーがそのトラックの再生を自動的に開始します。

コードのいくつかの関連部分は次のとおりです。

初期化

var videoplayer = new MediaElementPlayer("#videoplayer",
{
defaultVideoWidth: 480,
defaultVideoHeight: 270,
videoWidth: -1,
videoHeight: -1,
audioWidth: 960,
audioHeight: 30,
startVolume: 0.8,
loop: false,
enableAutosize: true,
features: ['playpause','progress','current','duration','tracks','volume'],
success: function(mediaElement,domObject) {
  mediaElement.addEventListener('ended', function(e) {
//Next song.
playTitle((currentIndex<playlist.length-1)?currentIndex+1:0);
  }, false);
},
startLanguage: '',
translations: [],
translationSelector: false,
googleApiKey: '' });

これは、現在のトラックから次のトラックにトラックを変更する部分です。

function playTitle(url){
videoplayer.pause();
videoplayer.setSrc(mejs.Utility.absolutizeUrl(url));
videoplayer.load();
videoplayer.play();
}

問題は、次のトラックがロードされないことです。現在のトラックは一時停止さ、次のトラックの長さが表示されますが、再生は開始されません。

興味深い部分は次のとおりです。Chromeコンソールで同じ手順を入力すると、意図したとおりに完全に機能します。現在のトラックは一時停止され、次のトラックがロードされ、入るvideoplayer.play();と再生が開始されます。

ある種の遅延の問題であり、その間に何らかのイベントが発生するのではないかと思います。どれがどれなのか、どうやってトラップするのかわからない!

4

0 に答える 0