Brightcove两个玩家API

时间:2013-09-20 11:48:33

标签: javascript brightcove

我正在使用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>

管理多个玩家的想法?

1 个答案:

答案 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,这是一个播放时停止其他玩家的示例。