本文主要是介绍HLS流在部分安卓机型无法播放问题的排查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
最近上线了一个数字人系统,客户端通过HLS实时拉流进行播放来提升用户体验(视频推理后再进行播放的延时不可接受)。通过一段时间的使用,反馈有部分Android机型无法正常播放视频。
问题排查
因为上线之前做过测试,在VLC播放器, iOS和Android测试机web端均表现正常,因此怀疑是Android机的系统webview存在差异,但这个方向排查未果. 后来发现HLS官方提供的一个测试视频流在报告的机型上可以播放,由此确定是视频流的问题。
开始怀疑是否网络问题,因为HLS是通过http来获取媒体文件的,先简单介绍一下HLS.
HLS代表HTTP Live Streaming,是一种用于在网络上实时传输流媒体的协议。HLS最初由苹果公司开发,现在已成为流媒体行业的一种标准。它通过将整个视频文件分成小的HTTP文件段,并使用HTTP协议进行传输,从而允许流媒体内容动态适应网络条件,并在不同设备上进行播放。HLS还支持自适应比特率,可以根据观众的网络状况动态调整视频质量。这使得HLS成为流媒体服务提供商、内容创作者和观众之间流畅传输视频内容的理想选择。
在相同的网络环境部署了生成的视频和标准测试视频,发现并非网络问题,此时怀疑视频的encode方式是否存在问题,查看Android官方文档后,发现音视频编码,容器格式都被支持。
用视频检测工具查看视频metadata时,无意中看到有问题的视频 YUV
是4:4:4
, 此时高度怀疑是这个问题,立刻使用ffmpeg对有问题的视频进行转换,上线测试,发现转换后的视频正常,原因得以确认,YUV=4:2:0
可以被Android支持。
这篇关于HLS流在部分安卓机型无法播放问题的排查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!