背景:
业务场景存在后台上传视频至华为云私有云上,小程序端中video<span style="font-size: 16px;">控件</span>的src调用接口对在线资源请求文件流;
__IOS端表现:__video控件播放在线视频时,资源体积约在10M时,界面黑屏无法加载资源;
__Android端表现:__video控件播放在线视频无异常;
可能性列表:
- 视频压缩率和编码的可能性;
- 视频大小的可能性;
- 视频资源路径中文的可能性;
- 后台资源请求失败的可能性;
经过排查视频压缩率符合ios能接受的范围、视频转换编码、第三方大型在线视频、确认文件在私有云的链接不包含中文。
在对第四个可能性排查过程中,我也发现我的视频获取方式和论坛的同类型的例子中的不大一样。
1)论坛中多为上传到公有云,直接调用的视频的网络路径,或是云上传后进行调用;
问题可能与私有云有关,在请教后端的同事后得知,我们是通过Tomcat对私有云资源进行缓存,再讲缓存的资源返回到客户端,在Tomcat缓存的过程中,由于文件过大,文件流出现异常,这也解释了为何小体积的视频可以正常播放,而约10M时就出现了问题。
解决方案:
1、最直接的解决方案是将资源上传到公有云中,直接调用网络地址;
2、对于基于私有云的解决方案,后端同事提出了一种解决方案:对私有云的资源授权,获取文件的临时路径;
由于业务存在敏感数据,我们后面选择了两种方案混合。
如果你也遇到了MEDIA_ERR_NETWORK这一报错问题,希望我的上面的文章能帮助到你;