我正在尝试显示具有预定开始时间的 VOD,但我找不到如何执行此操作。 Bitmovin 网站列出了播放器 API 函数,但实际上并没有任何如何使用它们的教程。
我已包含 SEEK,但我不知道为什么它不起作用?
它会播放视频,但从 0 秒而不是 40 秒开始。
<div id="player"></div>
<script type="text/javascript">
var conf = {
key: "XXXXXXXXXXXXXXXXXXXX",
source: {
progressive: "http://example.com/somevid.mp4",
poster: "http://example.com/someimage.jpg",
},
playback : {
autoplay : true,
seek: 40,
},
events: {
onPlay : function() {
// alert("I am Playing!");
},
},
};
var player = bitdash('player');
player.setup(conf).then(function(value) {
// Success
console.log('Successfully created bitdash player instance');
}, function(reason) {
// Error!
console.log('Error while creating bitdash player instance');
});
</script>
在播放器配置中,您可以指定播放开始时的回调函数 (
onPlay
),并在该函数内使用 seek(pos)
播放器 API 函数在几秒钟内找到所需的位置。
例如:
var conf = {
key:"XXXXXXXXXXXXXXXXXXXX",
source: {
progressive: "http://example.com/somevid.mp4",
poster: "http://example.com/someimage.jpg",
},
playback: {
autoplay: true
},
events: {
onPlay: function() {
// seek to desired start position
this.seek(40);
}
}
};
旁注:在事件回调内部,
this
关键字绑定到玩家对象。
以前的方法也会在每次用户暂停播放然后再次继续播放时寻找第 40 秒,因为每次用户继续播放时都会触发
onPlay
事件。为了避免这种情况,更好的方法是:
var conf = {
key:"XXXXXXXXXXXXXXXXXXXX",
source: {
progressive: "http://example.com/somevid.mp4",
poster: "http://example.com/someimage.jpg",
},
playback: {
autoplay: true
},
events: {
onReady: function() {
this.addEventHandler('onPlay', seekToStart);
}
}
};
function seekToStart() {
// remove event handler after first seek to avoid seeking
// to specified the position when user pauses and plays again
this.removeEventHandler('onPlay', seekToStart);
// seek to desired start position
this.seek(40);
}
就像Stefan提到的直接在onReady中使用seek()一样,它对我有用。尽管我的问题是不同的,自动播放在 IE11 Win7 中不起作用,但我使用下面的 hack 来强制启动它。
events: {
onReady: function() {
this.seek(0);
}
}
最近遇到了这个问题,因为上面的版本更新给定的代码对我不起作用,所以我想出了下面的代码。
const playerConfig = {
key: "abcxyz",
ui: false,
playback: {
muted: true,
autoplay: true
},
events: {
//will start playback again when video finishes playing
playbackfinished: function () {
this.play();
}
}
};