浏览器如何计算 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 <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 tbc
的 FFmpeg -i video.avi
获取它,并且您可以在那里看到 fps
。
问题是:这准确吗?如果没有,是否有准确的计算方法?我只是想模仿浏览器,以便准确地进行帧搜索。
【问题讨论】:
您是否设法找到如何发现元数据中的帧速率? 【参考方案1】:视频的帧速率不是计算的,而是作为视频元数据的一部分存储的。视频标题中只有一个字段表示每秒有多少帧(或者可能是每帧显示的时间量)。这与浏览器知道视频分辨率的方式相同。
【讨论】:
如果元数据 fps 错误/不一致怎么办?即,可能存在整个视频中 fps 变化的情况,不是吗? 元数据不能“错误”。如果帧速率太高,视频的播放速度会比您想要的快。我从未听说过允许 fps 变化的视频格式。 实际上,如果容器中的 fps 值设置为与流的 fps 不同的值,则元数据绝对可能是错误的。另外,还有这样一个东西:它叫做可变帧率或VFR。以上是关于浏览器如何计算 HTML5 <video> 的帧速率 (fps) 以实现准确的帧搜索?的主要内容,如果未能解决你的问题,请参考以下文章
在HTML5,用<video>元素加载的视频,在打开浏览器加载成功后会默认自动播放?
如何检查浏览器是不是可以通过 html5 video 标签播放 mp4?