即使强如google,也在Safari的视频播放上折戟沉沙

广告位招租
扫码页面底部二维码联系

前几天我写了《Safari中无法播放视频,“Failed to load resource: 插件处理的载入” 或 “尝试载入资源时发生错误。”》一文,本来是记录自己在开发过程中遇到的问题和解决过程。然而,今天我在访问gemini特设的veo3页面时,发现视频也都无法播放。在访问replicate的详情页,也遇到了相同问题。没想到,就连google、replicate这样的大公司,竟然也都不在safari上做测试。

右侧这个视频无法播放的界面,是safari标志性的“侮辱”信号。

在上一篇文章中,其实我已经详细阐述了造成这个问题的原因,是safari特殊的视频资源读取逻辑。它严格按照Range Request的模式来请求视频资源,而且同时,它会在第一个请求时读取0-1 bytes来得到完整长度,而且立马丢掉(请求呈红色),然后再重新计算后严格按照Range Request来读取视频的buffer进行播放。

基于Range来读取视频数据虽然理想丰满,但是现实骨感。我打开网络面板,找到了卡住的Range请求,如下:

在这一个请求中,后端要返回14.2M的数据包,这……也太坑了吧,既然你都用Range请求了,为啥不请求一个只有1M的Range呢?而Range包的大小,则是由浏览器(也就是safari)发出的Range请求头决定的,后端也无法决定。

因此,最后其实不是google工程师没有考虑到,而是safari坑。

随后,我将默认浏览器切换成了chrome。