我目前正在构建媒体播放器网络应用程序,该应用程序需要在客户端存储音频和视频。要求是避免流式传输,并且必须在Safari中使用。
为此,我选择了IndexedDb并将所有内容存储在浏览器中。我通过网络音频api获取音频和播放没有问题,但是我很快就遇到了视频问题。
我目前的方法是从indexeddb获取视频并为src属性创建blob网址:
const objectUrl = createObjectURL(record.videoData);
this.video.src = objectUrl;
这种方法适用于小型视频(30mb以下),但对于较大的视频,播放结果断断续续,我注意到Web检查器中对blob网址的几个错误请求(见图):
尽管出现了错误'请求视频加载和播放。唯一的问题是口吃。我也注意到这与文件大小成比例地变得越来越差。
我环顾四周但没有找到任何替代方法来实现无需流媒体播放。我看了Safari发行说明,我注意到以下内容(来自:safari release notes):
如果帧的总内存大小低于30MB(从5MB开始),则更改内存处理以保留动画图像的所有已解码帧
这看起来很可能是口吃的原因 - 我认为safari正在尝试下载大块的bloburl。
对于我想要实现的目标,还有其他方法吗?这在chrome(没有口吃)方面表现得更好,但是 - 这必须在Safari中使用。
非常感谢任何帮助。