Ziggeo SDK 视频播放器 - 获取寻道时间 [关闭]

Posted

技术标签:

【中文标题】Ziggeo SDK 视频播放器 - 获取寻道时间 [关闭]【英文标题】:Ziggeo SDK Video Player - get seek time [closed] 【发布时间】:2017-11-08 21:26:05 【问题描述】:

在 Ziggeo 的任何 SDK 中,你能找出播放器在视频的第几秒吗?

我想知道观看者何时进入视频 30 秒(例如)。

似乎有播放、暂停、搜索等方法(事件);但是它们中的任何一个是否可以返回用户在视频中的位置的值并不明显。

我可以通过观看播放和暂停事件来推断它们的位置,但搜索会转到视频的不可预测部分

【问题讨论】:

【参考方案1】:

正如您所说,有几个事件可用于此类实现,我假设您将使用 v2(因为这是推荐的方式)。

事件是:

    正在播放 暂停 结束 寻找

playing事件将在3种情况下被激活:

    视频播放开始 播放动作在视频暂停后激活 seek 选项用于到达视频中的特定点,seek 事件被触发,然后播放也会触发(因为现在正在再次播放视频)。

paused事件会在2种情况下被激活:

    当有人点击暂停按钮时 最后,暂停事件触发,然后是ended 事件。

endedseek 事件仅在特定情况出现时触发(分别使用视频结束或搜索)。

seek 事件但是有一个参数被传递到函数中 - position 允许我们快速获取搜索操作发生的确切时间。

知道了这一点,我们就知道会发生什么以及何时发生。

获取数据(任何视频数据)的方法是使用embedding.get();。按原样使用它会返回一个包含有用细节的完整对象,但是对于位置,您只需键入“位置”。

这是有效的事件代码:

player.on('playing', function()
  console.log('This is "playing" event from ' + player.get('position') + ' of ' + player.get('totalduration') );
);
player.on('paused', function()
  console.log('This is "paused" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
);
player.on('ended', function()
  console.log('This is "ended" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
);
player.on('seek', function(position)
  console.log('This is "seek" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
  console.log('quicker way and more reliable:' + position);
);
您可以看到抓取“位置”和“总持续时间”,这只是示例。 最好指出 seek 事件在 position 参数中获取正确的数据,因此请使用它而不是 .get() 方法,因为它可以告诉您稍微“旧”的值。

以下是完整的代码 sn-p,但是您需要添加自己的应用程序令牌和视频令牌。 为此,只需将“APP_TOKEN”替换为您的应用程序令牌,将“VIDEO_TOKEN”替换为视频令牌或密钥。

<!DOCTYPE html>
<html>
  <head>
    <!-- We are declaring our resource calls at this location -->
    <link rel="stylesheet" href="https://assets-cdn.ziggeo.com/v2-stable/ziggeo.css" />
    <script src="https://assets-cdn.ziggeo.com/v2-stable/ziggeo.js"></script>
    <script>
      var ziggeoapp = new ZiggeoApi.V2.Application(
        token:"APP_TOKEN",
        webrtc_streaming: true
      );
      ZiggeoApi.V2.Locale.setLocale("en");
      // the above can be quickly retrieved from https://ziggeo.com/docs/sdks/javascript/browser-integration/header

      //utilizing application event. This makes sure that the code is checked for after DOMReady and Ziggeo system is initialized.
      //application events: https://ziggeo.com/docs/sdks/javascript/browser-interaction/application-events
      ziggeoapp.on('ready', function() 
        var player = new ZiggeoApi.V2.Player(
          element: document.getElementById('player_placeholder'),
          attrs: 
            countdown: 3,
            width: 640,
            height: 480,
            theme: 'modern',
            themecolor: 'red',
            video: 'VIDEO_TOKEN'
          
        );

        player.activate();

        //if we want to listed to all embeddings on the page, regardless of knowing which it is, we could use the application wide embedding events approach (global events system): https://ziggeo.com/docs/sdks/javascript/browser-interaction/application-embedding-events
        //however the private events seem much better for reacting to them
        //https://ziggeo.com/docs/sdks/javascript/browser-interaction/events
        player.on('playing', function()
          console.log('This is "playing" event from ' + player.get('position') + ' of ' + player.get('totalduration') );
        );
        player.on('paused', function()
          console.log('This is "paused" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
        );
        player.on('ended', function()
          console.log('This is "ended" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
        );
        player.on('seek', function(position)
          console.log('This is "seek" event at ' + player.get('position') + ' of ' + player.get('totalduration') );
          console.log('quicker way and more reliable:' + position);
        );
      );
    </script>
  </head>
  <body>
    <div id="player_placeholder"></div>
  </body>
</html>

我在代码中添加了带有链接的 cmets,希望能提供更多信息。

【讨论】:

以上是关于Ziggeo SDK 视频播放器 - 获取寻道时间 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Ziggeo 视频 - 如何做出响应?

我需要将创建的视频发送到 ziggeo 的网络服务

安卓视频播放(阿里云视频点播播放器SDK+SurfaceView)

IMA SDK HTML5 视频播放器控件未显示

视频直播方案(播放器和SDK)

高清录制 - Ziggeo Recorder v2 JS