1

プロジェクト用のカスタム プレーヤーを実装しています。私が行った変更の一部である可能性があると最初は思いましたが (マイナーでした)、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();
      }

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

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 ハンドラーに渡されないことです。そのため、プレイヤーへの参照を取得するには、パブリッシング コードから ID を取得する必要があります。

于 2013-06-20T04:20:11.717 に答える