在谷歌浏览器和edge浏览器中播放视频时发现视频结束播放时,当前播放时长和总时长不相等,有误差。其他浏览器未做尝试。
操作步骤:
1、在文件信息中查看视频总时长为23秒,使用电脑自带播放器播放视频,查看总时长为23秒;
2、从web端(客户端)上传该视频到点播存储,使用web端阿里云播放器尝试播放,播放总时长显示为22秒,视频播放结束时自动停止,显示当前播放时长为23秒,导致两个时长不相等;
3、使用播放器自带方法 getDuration() 在视频加载完成后获取视频的总时长,为22.84秒;
4、使用播放器自带方法在视屏结束播放时获取当前播放时长,为23.044776秒;
23.044776 ≠ 22.84
结束播放时当前播放时长 = 视频总时长
从播放器的角度来看:
这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,我们进一步定位一下
获取的结束时间和自动播放后获取的结束时间不一致。
第一个值:是使用getDuration()获取的。
第二个值:是使用第一个值设置当前时间seek(duration),然后再使用getCurrentTime()获取的。
第三个值,是视频播放完使用getCurrentTime()获取的。发现它们的值都不一样
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。