使用 Bitmovin 播放器寻找 VOD

VOD seeking with Bitmovin player

我正在尝试显示具有预定开始时间的 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>

据我所知,"seek" 属性在播放器配置中无效 - documentation 中也未说明。因此,要实现所需的行为,您很可能必须使用 API 并在播放器实例上调用 .seek(x) 命令。

但可能还有另一种方法可以做到这一点。也许最好直接与 Bitmovin 取得联系 - 我发现他们的支持团队反应迅速。

在播放器配置中,您可以指定播放开始时的回调函数 (onPlay),并在该函数内使用 seek(pos) 播放器 [=26] 以秒为单位寻找所需位置=]函数。

例如:

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);
  }
}