视频跳转触发了seeked,画面就到位了吗

播放器触发了 seeked。页面也读到了 6 秒。这次跳转仍未通过我的验收。这是本轮视频实验里需要单独留下的一条结果:在 26 秒观察窗内,记录没有拿到目标画面的帧回调。我把事件和目标画面分开记录。

我在试用图映 ImgIng时实际导出了两段海浪视频,也另外准备了普通 MP4 做播放对照。本文的 seek 记录来自后者,不能直接算成图映功能的失败。我要确认的是网页里拖动进度条以后该拿什么作为完成依据。一次导出能结束,只能回答文件有没有产出,还没有回答播放器会怎样寻址。

我测了两份普通 MP4,把动作固定在一个比较早的时刻:首帧出现后再等 500 毫秒,暂停视频并将 currentTime 设为 6 秒。两份样本都长 8 秒。帧率为 25fps。本地服务的传输预算是每秒 256 KiB。每条请求开始前等待 80 毫秒。我刻意没等全片读完,想看到尚在加载时改变播放位置的结果。

我分别保存了设置的目标、seeked 到达时的 currentTime,以及帧回调携带的 mediaTime。前两项用来对照想去哪里和实际落在哪里。第三项用于检查实际回调对应的画面时间。MDN 对 seeked 的定义描述的是寻址操作结束与 seeking 状态变化,并不是为任意业务目标出具验收结果。

本轮通过条件设为 mediaTime 落在 6±0.15 秒内,也就是 5.85 到 6.15 秒。这里通过 requestVideoFrameCallback 读取帧时间。0.15 秒是这轮实验选定的容差。它不是浏览器规范要求。25fps 下相邻帧间隔约 0.04 秒。这个容差覆盖了不止一帧,因此不足以证明精确命中了某一帧。

先出现的是目标被钳位的情况。A 样本索引在文件头部、服务端忽略 Range 时,Chromium 149 两次都停在 0 秒,没有到达 6 秒。当时的 seekable 为 0,0。Firefox 151 在相同组合下两次分别落在 1.16 秒和 0.36 秒。这两次都没有到达目标位置。很快返回不代表很快完成了指定跳转。

另一种结果更容易漏掉。B 样本同样使用头部索引并忽略 Range,WebKit 26.5 测试构建触发了 seeked,currentTime 也是 6 秒,但 26 秒内没有取得符合条件的目标帧回调。我把它留在"画面未验收"一栏。记录不足以证明屏幕永远不会更新。这一项的根因还没有定位。

作为成功对照,A 样本头部索引配合支持 Range 的服务时,Chromium 两次到达目标帧用时 0.601 秒和 0.608 秒,中位数为 0.605 秒。这里从发起 seek 开始计时。它不包括此前加载到首帧的时间。这样记录以后,首帧、寻址事件和目标帧才不会被混成一个"视频加载耗时"。

配图是B样本尾部索引加支持Range的成功对照,页面记录已显示第6秒画面。它来自本地受控复现页。这张图对应自己的输入与条件,不能替代前述A片钳位和WebKit未取得目标回调的记录。图中的3.35秒是单次跳转耗时,不能抄作其他组的中位数。海浪画面旁的时间与日志配合起来才有意义。

测量在 2026 年 9 月 30 日的 macOS 26.5.2 上完成,每个普通 MP4 组合重复两次。WebKit 是测试构建,不能据此宣称正式 Safari 一定如此。图片素材来自 דוד שי 的 Wikimedia Commons 海浪,按 CC BY-SA 4.0 使用并做了截取、缩放和转码。非本人拍摄。

排查自己的播放器时,我会先保存目标时间和操作前的 seekable。seeked 时刻的实际位置也要留下。需要验证目标画面时就追加帧回调的 mediaTime,并预先写清允许误差和观察时长。位置被钳回去时先记录早期可寻址范围。位置已到却没有目标帧证据时仍保留未通过状态。下载完成后可以另做一轮对照。早期操作的失败记录也应保留,才能区分两种时机下的表现。

相关推荐
橙光成长14 小时前
PDF离线工具箱深度解析:4MB纯前端单文件,40+功能全本地运行,文件绝不上传
前端·pdf·1024程序员节
小poop21 小时前
CSS 基础与实战:从入门到精通网页美化
前端
Csvn1 天前
运行时性能
前端
Never_every991 天前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck1 天前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖1 天前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
欣欣之王来了1 天前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒1 天前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师1 天前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
特立独行的猫A1 天前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos