开发者社区> 问答> 正文

web版阿里云播放器播放时长和视频总时长有误差

已解决

问题描述

在谷歌浏览器和edge浏览器中播放视频时发现视频结束播放时,当前播放时长和总时长不相等,有误差。其他浏览器未做尝试。

操作步骤:

1、在文件信息中查看视频总时长为23秒,使用电脑自带播放器播放视频,查看总时长为23秒;

2、从web端(客户端)上传该视频到点播存储,使用web端阿里云播放器尝试播放,播放总时长显示为22秒,视频播放结束时自动停止,显示当前播放时长为23秒,导致两个时长不相等;

3、使用播放器自带方法 getDuration() 在视频加载完成后获取视频的总时长,为22.84秒;

4、使用播放器自带方法在视屏结束播放时获取当前播放时长,为23.044776秒;

23.044776 ≠ 22.84

期望结果

结束播放时当前播放时长 = 视频总时长

展开
收起
游客nw5wyk5sziifo 2023-02-04 09:23:29 230 0
2 条回答
写回答
取消 提交回答
  • 采纳回答

    从播放器的角度来看:

    这2个时间,00:23/00:22,

    00:23是通过getCurrentTime方法获取的,取到的值是23.044776s,再通过Math.floor(23.044776),向下取整,最后展示出23s。getCurrentTime方法实际使用的是 video 元素的 currentTime  (https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/duration)属性值,播放器没有做额外处理。

    同理,00:22是通过getDuration方法获取的,取到的值是22.84s,再通过Math.floor(22.84),向下取整,最后展示出22s。

    getDuration方法实际使用的是 video 元素的 duration (https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/duration )属性值,播放器也没有做额外处理。

    所以需要看一下上传到点播存储这个内部做了什么,导致video获取的时间是这样的,也可以提供一下这个流的url,我们进一步定位一下

    2023-02-04 19:05:51
    赞同 展开评论 打赏
  • 获取的结束时间和自动播放后获取的结束时间不一致。
    第一个值:是使用getDuration()获取的。
    第二个值:是使用第一个值设置当前时间seek(duration),然后再使用getCurrentTime()获取的。
    第三个值,是视频播放完使用getCurrentTime()获取的。发现它们的值都不一样
    image.png

    2024-10-12 14:17:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载