Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mediaelement.js setCurrentTime在Firefox和使用flash时设置的时间不正确_Javascript_Jquery_Flash_Video_Mediaelement.js - Fatal编程技术网

Javascript Mediaelement.js setCurrentTime在Firefox和使用flash时设置的时间不正确

Javascript Mediaelement.js setCurrentTime在Firefox和使用flash时设置的时间不正确,javascript,jquery,flash,video,mediaelement.js,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)+'

我使用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;
}
var curr=t.media.getCurrentTime();
如果(当前<段[i][0]){
console.debug(curr.toFixed(1)+跳转到“+i+”[“+segments[i][0]+”,“+segments[i][1]+]”段中的“+segments[i][0]+”);
t、 media.setCurrentTime(段[i][0]);
返回;
}
当我在代码执行后记录当前时间时,它显示当前时间已正确更新(例如,更新为19),但当下次调用事件时,当前时间错误(15.3)。
只有在firefox上才会出现这种情况,而在chrome上,当回到flash时,这种情况似乎才起作用。

有什么想法吗?

问题在于闪存回退。显然,flash在h.264格式上存在问题,并且会跳到特定的时间。Flash只能跳转到H.264格式视频中的关键帧,因此当媒体元素跳转到某一帧时,Flash播放器会跳转到最近的关键帧。

这个问题可以通过每两帧设置一个关键帧来解决(例如使用ffmpeg-g标志),但更好的解决方案是将视频保持为另一种格式,以便闪存回退

该标志在哪里定义?我现在也有同样的问题。这是一个用于转换视频的ffmpeg选项。如果使用ffmpeg转换视频,则可以设置组帧标志(例如-g 2),并每两个场设置一个关键帧。由于某些原因,设置每个帧都不起作用。