Mediaelement.js setCurrentTime在Firefox和使用flash时设置错误的时间

时间:2012-05-18 07:38:45

标签: javascript jquery flash video mediaelement.js

我使用 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上,当回到闪存时,在chrome中似乎可以工作 任何想法?

1 个答案:

答案 0 :(得分:3)

问题在于闪回后退。显然flash有h.264格式的问题并跳过特定时间。 Flash只能跳转到H.264格式视频中的关键帧,因此当媒体元素跳到某个帧时,Flash播放器会跳转到最近的关键帧。
可以通过每隔几帧设置一个关键帧来解决问题(例如通过使用ffmpeg -g标志),但更好的解决方案是将视频保持为闪存回退的另一种格式。