锁屏界面进度条无法拖动本质是视频源或服务端不支持分段加载,而非enable-progress-gesture属性问题;需确保视频为H.264编码、MP4格式且含moov头(-movflags +faststart),并返回HTTP 206响应。

锁屏界面进度条无法拖动,本质不是“进度条”问题,而是你正在操作的其实是 video 组件的进度控制手势——锁屏界面本身不提供可拖动的 UI 元素,它只是系统级播放控制面板,其行为完全由视频源、原生播放器和平台策略决定。
video 组件的 enable-progress-gesture 在锁屏界面无效
这个属性只影响页面内 组件自身的手势区域(比如滑动进度条),对系统锁屏界面的控制条无任何作用。iOS 和 Android 的锁屏播放控件是独立渲染的,不读取 uni-app 的组件属性。
- 你在页面里设
enable-progress-gesture="false",只会禁用页面内的拖动,锁屏界面照常响应拖拽 - 反过来,即使设为
true,也不能“修复”锁屏端拖不动的问题——那是服务端或视频格式导致的 - 真机测试时,锁屏控件是否支持拖动,取决于:
video.src是否返回 HTTP 206(Range Request)响应、视频是否含moov头(即是否加了-movflags +faststart)
锁屏进度条拖不动的常见原因与验证方式
不是代码没写对,而是视频资源或服务器配置不满足流式播放前提。锁屏控件依赖分段加载能力,一旦失败就自动禁用拖动(表现为:滑块可显示,但拖不动、松手回弹)。
- 用 Safari 或 Chrome 直接打开
video.src链接,尝试拖动进度条 —— 如果网页里也拖不动,问题出在视频或服务端 - 用 curl 检查响应头:
curl -I -H "Range: bytes=0-999" https://your.domain/video.mp4,看是否返回HTTP/2 206和Content-Range - 本地视频务必放
static/目录,并用绝对路径引用(src="/static/xxx.mp4"),相对路径在锁屏上下文可能解析失败
App 端锁屏进度条的可控边界在哪
你可以影响的只有「是否启用锁屏控件」和「显示哪些按钮」,无法接管其拖动逻辑。所有控制都通过 plus.video 或 uni.createVideoContext 的原生能力透传给系统播放器。
- Android:调用
plus.video.setMediaSession({ seekable: true })可显式声明支持跳转(需 HBuilderX 3.7.0+) - iOS:必须确保视频是 H.264+AAC 编码、MP4 容器、且
moov在文件开头(FFmpeg 命令:ffmpeg -i in.mp4 -c copy -movflags +faststart out.mp4) - 不要试图用
@timeupdate+ 自定义 slider 模拟锁屏拖动 —— 锁屏界面完全不响应你的 JS 事件
真正卡住的地方往往不在前端代码,而在视频文件生成环节和 CDN 配置。哪怕 video 组件在页面里拖得动,锁屏界面仍可能失效——因为它们走的是两套加载逻辑。先确认视频本身支持随机访问,再排查平台差异。











