我正在使用brightcove api,如导游所示(下图),但我的问题是我不能以这种方式管理两个玩家,我需要它:
<object id="VideoBrightcove?c=4&m=2&s=2" class="BrightcoveExperience">
<param name="bgcolor" value="#FFFFFF" />
<param name="width" value="480" />
<param name="height" value="270" />
<param name="playerID" value="2549948545001" />
<param name="playerKey" value="AQ~~,AAABmA9XpXk~,-Kp7jNgisreVadKjzdyJfLcfukyXcGqB" />
<param name="isVid" value="true" />
<param name="isUI" value="true" />
<param name="dynamicStreaming" value="true" />
<param name="includeAPI" value="true" />
<param name="templateLoadHandler" value="BCLS.onTemplateLoad" />
<param name="templateReadyHandler" value="BCLS.onTemplateReady">
<param name="@videoPlayer" value="1754261637001" />
</object>
<script>
var BCLS = (function() {
var player,APIModules,mediaEvent,videoPlayer;
return {
onTemplateLoad : function (experienceID) {
//do something
},
onTemplateReady : function (evt) {
//do something
},
onProgress : function (evt) {
//do something
},
onBegin : function (evt) {
//do something
},
onComplete : function (evt) {
//do something
}
}
}());
</script>
管理多个玩家的想法?
答案 0 :(得分:2)
您使用智能播放器API的许多代码示例都使用全局变量,或者我假设您正在进行,BCLS.player
用于“体验”,BCLS.videoPlayer
用于视频播放器模块等。除非你为每个玩家维护一组单独的加载/就绪处理函数和一组单独的变量,否则这对多个玩家来说效果不佳。这不会很好地扩展。
与多个玩家合作的最简单方法是依赖传递给事件处理程序的事件,因为这包括event.target.experience.id
的玩家ID。
function onTemplateReady(event) {
var player = brightcove.api.getExperience(event.target.experience.id);
var videoPlayer = player.getModule(brightcove.api.modules.APIModules.VIDEO_PLAYER);
}
使用addEventHandler时,您需要将函数包装在匿名函数中,而不是只使用函数名称:
videoPlayer.addEventListener(brightcove.api.events.MediaEvent.PLAY, function(event) {onPlay(event)})
//instead of videoPlayer.addEventListener(brightcove.api.events.MediaEvent.PLAY, onPlay})
如果需要,可以将其他模块等传递给这些功能,例如:如果这是在上面的onTemplateReady
中完成的,则player
可以在播放器处理程序中使用:
videoPlayer.addEventListener(brightcove.api.events.MediaEvent.PLAY, function(event) {onPlay(event,player)})
请参阅使用上述某些技巧的this example,这是一个播放时停止其他玩家的示例。