我正在使用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后备广告.
原文地址:https://codeday.me/bug/20191201/2079874.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。