Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 未正确设置HTML5 video.currentTime_Javascript_Html_Video - Fatal编程技术网

Javascript 未正确设置HTML5 video.currentTime

Javascript 未正确设置HTML5 video.currentTime,javascript,html,video,Javascript,Html,Video,我有一个HTML5网页的例子 <html> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function log(msg) { console.log(msg); } $(document).ready(

我有一个HTML5网页的例子

<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

function log(msg) { console.log(msg); }

$(document).ready(function() {
var video = document.getElementById("video");
video.load();
video.addEventListener('loadedmetadata', function(){
  video.currentTime = 95.061728395;
});
});
</script>
<body>
<video id="video" preload="none" height="360" width="640">
<source src="news.mp4">
  Your browser does not support this video.
</video>
</body>
</html>
我在Linux g6 3.2.0-54-generic#82 Ubuntu SMP上使用Chrome版本30.0.1599.114作为浏览器


提前感谢您,任何帮助都将不胜感激

如果没有代码来测试这个答案,这将是一个可能的原因-

如您所见,视频FPS为29.97。我的猜测是Chrome浏览器(使用ffmpeg进行mp4解码)只是将FPS舍入到30 FPS。一个原因可能是更新同步到监视器刷新率,通常为60 Hz。这意味着要获得一个“干净”的帧,视频帧速率为30 FPS,而不是用于模拟NTSC的29.97(这只是我关于浏览器如何处理这个问题的理论)

这将为您提供:

@30.00 FPS frame 2852
@29.97 FPS frame 2849
这与您体验到的差异(3帧)大致对应

为了补偿这一点,您可以通过以下方式重新计算您的时基:

newTime = oldTime / 30 * 29.97;
这将调整时间为:

95.061728395 / 30 * 29.97 = 94.96666666660501
如果我们以30 FPS的速度使用此时间(对于
currentTime
),我们将得到:

94.96666666660501 * 30 => frame 2849

就好像它是以29.97 FPS的速度运行的。

在SO?Dang上有禁止系统吗?现在我看起来像是他删除所有评论后的混蛋。抱歉,zanman,您是否使用推荐的Web设置对此视频进行了编码?看起来可能是b帧设置或其他愚蠢的属性造成的。没问题!我会再次检查这些设置并发布它们,我正在使用avconv将其从avi转换为MP4。正在使用的“播放器”是什么?比如,您可以更改浏览器的默认视频播放器并进行进一步测试吗?使用图腾或VLC或。。else.Related:,无用的Related:,verry Related:这实际上给了我一个方向错误的帧,但是做了95.061728395/29.97*30给了我正确的帧。我还没有完全实现这个解决方案,但我相信它是正确的。我对你感激不尽,这是一个尝试的好主意!我也有同样的问题;然而,乘以一个常数对我来说不起作用。我的视频FPS是29.92。我正在使用OpenCV获取帧毫秒。我的尝试表明这种转变不是线性的。当我使用一个常数来校正接近开始的帧时,它在接近视频结束的时间不起作用,反之亦然。
94.96666666660501 * 30 => frame 2849