浏览器如何计算 HTML5 <video> 的帧速率 (fps) 以实现准确的帧搜索?

Posted

技术标签:

【中文标题】浏览器如何计算 HTML5 <video> 的帧速率 (fps) 以实现准确的帧搜索?【英文标题】:How do browsers calculate frame rate (fps) for HTML5 <video> for accurate frame-seeking? 【发布时间】:2011-06-26 06:30:59 【问题描述】:

目前所有浏览器都将 html5 &lt;video> 寻帧 API 实现为时间划分。 例如在 10fps 的视频中,第 10 帧time=1.0 秒。因此,如果您希望能够准确地进行帧搜索,向前推进一帧,您需要转到time=1.1 秒。这种逐帧计算是通过了解视频的帧速率 (fps) 来完成的。

但是,我不知道浏览器是如何计算帧率的。

他们要么读取视频文件的某些fps 属性的容器信息,要么自行计算。

通过使用 FFmpeg,您可以通过返回 Stream #0.0: Video: libvpx, yuv420p, 512x288, PAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 25 tbcFFmpeg -i video.avi 获取它,并且您可以在那里看到 fps

问题是:这准确吗?如果没有,是否有准确的计算方法?我只是想模仿浏览器,以便准确地进行帧搜索。

【问题讨论】:

您是否设法找到如何发现元数据中的帧速率? 【参考方案1】:

视频的帧速率不是计算的,而是作为视频元数据的一部分存储的。视频标题中只有一个字段表示每秒有多少帧(或者可能是每帧显示的时间量)。这与浏览器知道视频分辨率的方式相同。

【讨论】:

如果元数据 fps 错误/不一致怎么办?即,可能存在整个视频中 fps 变化的情况,不是吗? 元数据不能“错误”。如果帧速率太高,视频的播放速度会比您想要的快。我从未听说过允许 fps 变化的视频格式。 实际上,如果容器中的 fps 值设置为与流的 fps 不同的值,则元数据绝对可能是错误的。另外,还有这样一个东西:它叫做可变帧率或VFR。

以上是关于浏览器如何计算 HTML5 <video> 的帧速率 (fps) 以实现准确的帧搜索?的主要内容,如果未能解决你的问题,请参考以下文章

在HTML5,用<video>元素加载的视频,在打开浏览器加载成功后会默认自动播放?

html5如何更改video的src属性

如何检查浏览器是不是可以通过 html5 video 标签播放 mp4?

如何实现html5 video标签 手机浏览器播放视频事件判定播放中的视频超出电手机的浏览范围后视频暂停播放

如何控制html5 video 控制条显示和隐藏时间

【HTML5的video标签】我的谷歌浏览器无法播放,video标签里是MP4格式视频!