微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-Mediaelement.js setCurrentTime在Firefox中以及使用Flash时错误地设置了时间

我正在使用mediaelement.js组件仅显示视频的一部分.
我在timeupdate事件上放置了一个侦听器,每次播放视频时,我希望跳过的视频都使用setCurrentTime()跳转到下一个视频.但是,下次调用timeupdate事件的时间与设置的时间不同(设置的时间之前几秒钟).
这是我的代码:

var curr = t.media.getCurrentTime();
if (curr < segments[i][0]) {
  console.debug(curr.toFixed(1)+' jumping to '+segments[i][0]+' in segment '+i+'      ['+segments[i][0]+','+segments[i][1]+']');
  t.media.setCurrentTime(segments[i][0]);
  return;
}

当我在执行代码后记录当前时间时,它表明当前时间已正确更新(例如,更新为19),但是当下次调用该事件时,当前时间是错误的(15.3).
它仅在Firefox中发生,当回退到Flash时,在Chrome中似乎可以正常工作.
有任何想法吗?

解决方法:

问题在于闪存后备.显然,flash的h.264格式存在问题,并跳到了特定时间. Flash只能跳到H.264格式视频中的关键帧,因此,当媒体元素跳到某个帧时,Flash Player会跳到最近的关键帧.
可以通过每两帧设置一个关键帧来解决该问题(例如,使用ffmpeg -g标志),但是更好的解决方案是将视频保持为其他格式以用于Flash后备广告.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐