【发布时间】:2021-12-04 07:04:33
【问题描述】:
包含video 元素且src 属性设置为包含视频文件的数据URI 的网页不会在iOS 15 上的Safari 中播放视频。
使用 Safari 开发工具检查设备/模拟器表明浏览器反复发出带有Range: bytes N-M 标头的请求,多次读取整个视频文件,导致巨大的内存消耗并最终无法开始播放。
如果视频足够小并且可以开始播放,则播放速度会很慢,甚至需要很长时间才能开始。
这个问题有解决办法吗?
附:将视频保存在数据 URI 中是我要解决的任务所固有的,因此请不要建议将视频文件作为单独的资源保存:)
【问题讨论】:
-
(1) 我的操作系统 Windows 没有 Safari,但从 quick research 看来,iOS 15 中似乎存在一些问题/错误。看看提到的一些解决方法是否有助于你。您如何设置可能会影响播放的页面代码(例如: 使用任何额外的框架?)并不明显。
-
(2) 那么你有base64格式的视频数据吗?如果您跳过 Data URI 方式并将 B64 数据保留在 String 变量中,然后使用
createObjectURL将 B64 解码为您load到视频标签中的某个 bufferArray (blob),会发生什么情况?例如:var vidBytes = new Uint8Array( atob( yourB64string) );然后要使其可用作视频 src,它是path = (window.URL || window.webkitURL).createObjectURL( vidBytes );,最后是load()your_vid_element_byID.setAttribute("src", path); your_vid_element_byID.load();的视频元素 -
@VC.One 这正是我们现在正在做的,它似乎工作得更好,但是,我们仍然看到重复的请求并且播放似乎有点滞后。
标签: safari html5-video ios15