loveCoding
loveCoding
  • 发布:46 分钟前
  • 更新:44 分钟前
  • 阅读:25

【报Bug】鸿蒙视频播放seek接口无效

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 5.24

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: mate60

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
let videoContext = null  
//onMounted  
videoContext = uni.createVideoContext('myVideo')  
//打印方法存在  
        console.log(videoContext.seek)  
//以下2个都跳不了。方法存在,也不是执行时机的问题,只能说明接口无效  
        nextTick(() => {  
            videoContext.seek(300)  
        })  
        setTimeout(() => {  
            videoContext.seek(300)  
        }, 200)

操作步骤:

预期结果:

实际结果:

bug描述:

不能跳转到多少秒播放

46 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

好的,收到你的 Bug 反馈。作为 DCloud 官方人员,我对这个反馈进行如下评审和分析:

1. 反馈质量评审

这个 Bug 反馈在核心环境信息上提供得比较完整,但关键的问题复现环节存在严重缺失,影响了整体处理效率。

  • BUG 标题与描述:标题“鸿蒙视频播放seek接口无效”准确概括了问题。描述“不能跳转到多少秒播放”清晰明了,官方人员能够看懂你的意图。
  • 代码示例不完整,无法直接运行。你提供的仅仅是 <script> 中的片段,缺少了 <template><video> 组件的声明(例如 id 是否为 myVideo,是否绑定了 src 等),也缺少 <script> 的完整上下文(如 onMounted 的引入)。官方人员需要自行补全这些代码才能尝试运行,建议补充完整的 SFC(单文件组件)代码。
  • 复现步骤严重缺失。复现步骤填写为“无”。虽然代码中使用了 nextTicksetTimeout,但缺少诸如“点击某个按钮触发”、“视频是否处于播放状态”等关键操作时机描述。官方人员无法根据当前信息直接复现问题,强烈建议补充详细的复现步骤
  • 预期结果:填写为“无”。建议补充,例如“调用 seek 后视频应跳转到第 300 秒播放”。
  • 实际结果:填写为“无”。建议补充,例如“视频进度未发生改变,仍停留在原位置”。
  • 分类信息:非常完整。包含了操作系统(Win11)、HBuilderX 版本(5.24 正式版)、手机 OS 平台(HarmonyOS NEXT 6.0.0)、Vue 版本(Vue3)和机型(mate60),这为我们排查问题提供了很好的基础。

评审结论:反馈有效,但复现步骤和代码示例的缺失会显著降低问题处理的优先级。若能提供一个最简可复现的完整工程,将极大提升排查效率。


2. 问题分析与排查

根据反馈内容并结合知识库,针对鸿蒙端 videoContext.seek 接口无效的问题,分析如下:

  • 接口支持情况:根据 uni.createVideoContext 兼容性说明uni.createVideoContext 及其 seek(position) 方法在 HarmonyOS 平台自 HBuilderX 4.23 起即支持。因此,该接口在鸿蒙端是支持的,不存在“鸿蒙平台不支持 seek”的情况。
  • 调用时机与状态限制:根据 plus 知识库对 video seek 行为的说明:“如果视频未处于播放状态,则操作无效。”(参考:plus.video.VideoPlayer.seek)。在你的代码示例中,onMounted 阶段视频组件可能尚未完成底层初始化,或者视频并未处于播放/暂停的活跃状态,此时调用 seek 极易失效。
  • 历史已知问题:在 ask 社区历史反馈中,video 组件的 seek 方法在 App 端曾存在过特定条件下的缺陷。例如:

3. 解决方案与建议

建议你按照以下步骤进行自查和调整,这有助于判断是调用时机问题还是框架缺陷:

  1. 确保视频处于播放状态:请确保在调用 seek 前,视频已经开始播放或被用户手动暂停。避免在视频加载/未播放状态下直接调用 seek
  2. 调整调用时机onMounted 时机可能过早,建议将 uni.createVideoContext 的创建及 seek 操作放到视频组件的 @loaded 事件回调中,或由用户主动点击按钮触发,而非在挂载时通过 nextTick/setTimeout 强制执行。
  3. 检查参数格式:确保传入的 position 为 Number 类型(如示例中的 300),避免传入字符串。

如果按照上述时机调整后,在视频正常播放状态下由用户触发 seek(300) 依然完全无效,则说明很可能是一个鸿蒙端的具体缺陷。请补充完整的可复现工程及详细的操作步骤,提交至 ISSUE 系统,官方人员将深入排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册