我正在开发一个项目,我们使用视频元素的currentTime属性中的值来使用ffmpeg在服务器后端上执行处理.我遇到过一个问题,即视频元素似乎报告的时间代码与ffmpeg需要访问视频中正确点的时间代码略有不同.
所以例如在Firefox中如果currentTime属性报告当前视频时间是26.83我可能会发现我真正想要的帧在26.72结束,所以如果我使用时间在服务器上使用ffmpeg提取帧我得到下一帧而不是当前的框架.
在视频的不同部分和不同的视频中,偏移量似乎略有不同.但是在Firefox中,偏移量通常接近十分之一秒.在chrome中,currentTime实际上似乎是提前或正确的currentTime约为5百分之一秒.在IE中找出偏移量更加困难,因为当我输入不同的时间代码来查找帧变化的确切时间码时,帧移位的位置似乎会发生变化.
我很确定ffmpeg使用的时间是正确的时间.它似乎与其他视频编辑软件如adobe premier更加一致.
关于什么可能导致这种行为的任何想法?
JS获取currentTime:
AVideo.prototype.getCurrentTime = function()
{
return this.videoElement[0].currentTime;
};
Run Code Online (Sandbox Code Playgroud)
产生的ffmpeg命令:
ffmpeg -y -i '/tmp/myVideo.mov' -vframes 1 -ss 2.4871 -f image2 -y '/tmp/myFrame.jpg' 2>&1
Run Code Online (Sandbox Code Playgroud)