移动平台上视频直播的坑主要可以总结为两个方面:设备差异,以及网络环境这些场景下带来的技术考验。
移动直播场景的坑与规避措施
iOS 平台上无论硬编还是软编,由于是 Apple 一家公司出厂,几乎不存在因为芯片平台不同而导致的编码差异。
然而,在 AndroID 平台上,AndroID Framework SDK 提供的 MediaCodec 编码器,在不同的芯片平台上,差异表现很大, 不同的厂家使用不同的芯片,而不同的芯片平台上 AndroID MediaCodec 表现略有差异,通常实现全平台兼容的成本不低。
另外就是 AndroID MediaCodec 硬编层面的 H.264 编码画质参数是固定的 baseline,所以画质通常也一般。因此,在 AndroID 平台下,推荐是用软编,好处是画质可调控,兼容性也更好。
2 低端设备如何上高性能地采集和编码例如 Camera 采集输出的可能是图片,一张图的体积并不会小,如果采集的频次很高,编码的帧率很高,每张图都经过编码器,那么编码器又可能会出现过载。
这个时候,可以考虑在编码前,不影响画质的前提下(前面我们讲过帧率的微观意义),进行选择性丢帧,以此降低编码环节的功耗开销。
3 弱网下如何保障高清流畅推流移动网络下,通常容易遇到网络不稳定,连接被重置,断线重连,一方面频繁重连,建立连接需要开销。另一方面尤其是发生 GPRS / 2G / 3G / 4G 切换时,带宽可能出现瓶颈。当带宽不够,帧率较高/码率较高的内容较难发送出去,这个时候就需要可变码率支持。
即在推流端,可检测网络状态和简单测速,动态来切换码率,以保障网络切换时的推流流畅。
其次编码、封包、推流 这一部分的逻辑也可以做微调,可以尝试选择性丢帧,比如优先丢视频参考帧(不丢 I 帧和音频帧 ),这样也可以减少要传输的数据内容,但同时又达到了不影响画质和版视听流畅的目的。
4 需要区分直播流的状态和业务状态直播是媒体流、APP 的交互是 API 信令流,两者的状态不能混为一谈。尤其是不能基于 APP 的交互的 API 状态来判断直播流的状态。
以上是移动直播场景下常见的几个坑和规避措施。 总结
以上是内存溢出为你收集整理的音视频技术之《移动直播场景的坑与规避措施》全部内容,希望文章能够帮你解决音视频技术之《移动直播场景的坑与规避措施》所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)