Flowplayer在cuepoint的不同时间暂停

时间:2017-06-28 04:14:32

标签: video flowplayer

早上好。我有一个带有提示点ex [5,10]的Flowplayer视频。在这里,我的视频从第5秒开始,在第10秒暂停。所以它有效。但是,视频有时会在第9秒暂停,有时会在第10秒暂停。所以它看起来像一个流动播放器的bug。

我很欣赏一个提示或解决方案,我怎样才能让视频每次都在准确的时间暂停。

这是代码段

flowplayer(flowplayerObject, {
        hlsjs: {
          xhrSetup: function (xhr) {
            xhr.withCredentials = true;
          }
        },
        swf: ------,
        swfHls: -------,
        clip: {
          cuepoints:[videoStartTime,videoEndTime],
          sources: [
            {type: "application/x-mpegURL", src: -------l},
            {type: "video/mp4", src: -------}
          ]
        }
      }).one("ready", function (e, api, video){
        api.seek(parseInt(videoStartTime));
      }).on("cuepoint", function (e, api, cuepoint) {
         if (cuepoint.index === 1) {
          api.pause();
        };
      }) ;

谢谢

2 个答案:

答案 0 :(得分:1)

之前我没有使用过Flowplayer的cuepoints功能,但我熟悉seek()API函数,你可以在其中指定你想要寻找的视频中的时间(以秒为单位)。

要使搜索功能正常工作,您的视频需要在视频的每一秒都有一个关键帧。我有一种感觉,提示点会有相同的要求。

如果您熟悉ffmpeg,可以像这样使用“force_key_frames”参数为视频的每一秒添加一个关键帧 -

ffmpeg -i input_file_location -force_key_frames“expr:gte(t,n_forced * 1)” other_ffmpeg_parameters -y output_file_location

添加其他关键帧的缺点是您的视频会在磁盘上占用更多空间,但如果您需要视频暂停(或)在指定的时间一致地启动,我想不出任何其他方式使用Flowplayer的HTML5版本。

答案 1 :(得分:1)

感谢您的回答ami91。这是我从流动者开发者那里得到的:

对于触发cuepoint事件的250ms的进度事件(出于内存原因)的粒度有限制。 您正在使用的视频帧速率为25 fps,因此7.0s的提示点恰好位于帧边界上,因此如果触发提示点的进度事件低于7.0之前的125ms,则可能会过早触发。 稍后设置提示点应具有所需的效果。 你不会获得总精度,因为每隔0.04秒发射一次事件 - 甚至更多

所以,我只是在视频结尾加了0.5秒。