gpt4 book ai didi

javascript - Android video.duration 直到 video.play() 才会加载

转载 作者:太空狗 更新时间:2023-10-29 15:19:39 25 4
gpt4 key购买 nike

我有一个 html5 视频,我试图在播放期间的特定时间间隔设置回调。使用 video.play() 从 javascript 开始播放视频。现在我的代码监听 'loadedmetadata' 事件,然后查询持续时间并设置这些回调。在移动版 Safari 上运行良好,但在 Android(2.3.4 和 2.3.7)上运行不佳。

在 Android 上,'loadedmetadata' 似乎在持续时间实际可用之前发出。为了对此进行测试,我在我的代码中记录了加载过程的每一步的持续时间,以查看可以实际读取它的位置。在 video.play() 之前和一个 'timeupdate' 事件之后,video.duration 属性为 6000,与正在使用的视频无关。我用一个 mp4 文件和一个 3gp 文件对此进行了测试。一旦满足这些条件,就可以获得实际持续时间。

我发现这篇文章也有类似的问题 [1]。未被接受的最高投票答案是我最初的设置方式,它在 iOS 上运行良好。接受的答案也不起作用,并表明这是一个 webkit 问题。我记录了 video.readyState 属性并看到它在视频开始播放之前是 '4',但是持续时间在开始播放之前仍然不可用,并且第一个 'timeupdate' 事件。

我们当前的解决方法是查询 video.duration 值,并且仅在 video.duration !== 6000 时设置事件回调。这太丑陋了,我想查个水落石出,以免这个 hack 卷土重来。这里的讨论 [2] 似乎表明该问题可能与编码有关。也就是说,编码不正确,android 在文件加载之前不会正确读取元数据,或者可能根本不会正确读取元数据,并且它会以另一种方式计算持续时间。

有什么我可以做的让这个更干净,还是我现在被 hack 困住了?

[1] Problem retrieving HTML5 video duration

[2] http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/

最佳答案

我使用调用函数的 setTimeout 来递归地检查持续时间是否可用。

这样一来,该函数就可以在任何信息可用时立即显示持续时间等。

关于javascript - Android video.duration 直到 video.play() 才会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com