BrightCove智能播放器API HTML后备失败

时间:2013-06-17 22:13:56

标签: javascript html5 video html5-video brightcove

我正在为项目实现自定义播放器。我首先想到的可能是我做的一些改变(虽然很小)但是在渲染HTML版本时所有玩家似乎都失败了。有没有人有任何启动和运行的经验,这是我第一次使用BrightCove。这是我的代码。播放器位于页面底部的模式中,并且一旦模式打开,动态抓取参考ID以加载视频。

HTML

<script language="JavaScript" type="text/javascript" src="http://admin.brightcove.com/js/BrightcoveExperiences.js"></script>
  <object id="myExperience" class="BrightcoveExperience">
    <param name="bgcolor" value="0x01000000" />
    <param name="width" value="602" />
    <param name="height" value="451" />
    <param name="playerID" value="2346987014001" />
    <param name="playerKey" value="AQ~~,AAAACNNhjOE~,7GG4lXihTUWE4HZdWRznisBnhfUh1o33" />
    <param name="isVid" value="true" />
    <param name="isUI" value="true" />
    <param name="dynamicStreaming" value="true" />
    <param name="includeAPI" value="true" />
    <param name="forceHTML" value="true" />
    <param name="templateLoadHandler" value="onTemplateLoad" />
  </object>
  <script type="text/javascript">brightcove.createExperiences();
</script>
<script language="JavaScript" type="text/javascript">
  var player, modVP, expMod;
  function onTemplateLoad(experienceID) {
    player = brightcove.api.getExperience(experienceID);
    modVP = player.getModule(brightcove.api.modules.APIModules.VIDEO_PLAYER);
  }
</script>

JS

var waitForModVp = function () {
        if( typeof modVP == 'object' ) {
          modVP.loadVideoByReferenceID(newSrc);
          $(window).on('resize.size-video', function(){
            expMod = player.getModule(brightcove.api.modules.APIModules.EXPERIENCE);
            var width = window.innerWidth*0.8,
            height = (window.innerWidth*0.8)*0.7491694352;
            if (width < 610) {
              expMod.setSize(width, height);
              $('.fullscreen-interior-video').css({
                'width' : width+'px',
                'height' : height+'px'
              });
            }
          })
        } else {
          window.setTimeout( waitForModVp, 250 );
        }
      }
      if ( thisData.templateReference == "brightcovePlayer") {
        waitForModVp();
      }

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您还应该指定templateReady处理程序并将APIModules.VIDEO_PLAYER模块的初始化移动到该模块。这是一个非常常见的错误,只使用templateLoadHandler大部分时间都可以在桌面上运行,因此它可以吸引很多人使用移动设备。

请参阅http://support.brightcove.com/en/video-cloud/docs/getting-started-smart-player-api

中的以下注释
  

重要提示:了解加载的模板与之间的区别   模板准备事件:

     
      
  • templateLoad:已收到播放器和API的所有数据   浏览器,你现在可以获得对整个播放器的引用(   BrightcoveExperience) - 玩家还没有完全设置好,   如果你现在尝试在它上面调用任何方法,那么你就是   设立比赛条件

  •   
  • templateReady:玩家现在已经   完全实例化,并准备通过API与您进行交互 - 您   应该只在模板就绪后调用API模块的方法   事件已经解雇

  •   
     

为避免过早调用方法,可以跳过   templateLoad事件,只处理templateReady事件。该   这样做的缺点是玩家ID没有传递给   templateReady处理程序,因此您需要从发布中获取它   代码,以获得对播放器的引用。

答案 1 :(得分:0)

这似乎是个问题:

<param name="bgcolor" value="0x01000000" />

更改为:

<param name="bgcolor" value="#000000" />

该播放器现在可以在所有平台上运行。