避免延迟,对于直播来说,一直是一块比较难啃的骨头,而这块“骨头”却为移动直播源码开发凿出了一个又一个的“坑”,根据实践总结下来的经验,移动平台上视频直播的坑主要有两个方面:设备差异,以及网络环境这些场景下带来的技术考验。那么对这几个坑如何进行有效规避呢,下面我们就来具体看看。
一、了解不同芯片平台上的编码差异
iOS平台上无论硬编还是软编,由于是Apple一家公司出厂,几乎不存在因为芯片平台不同而导致的编码差异。 然而,在 Android平台上,Android Framework SDK提供的MediaCodec编码器,在不同的芯片平台上,差异表现很大,不同的厂家使用不同的芯片,而不同的芯片平台上Android MediaCodec表现略有差异,通常实现全平台兼容的成本不低。 另外就是Android MediaCodec硬编层面的 H.264编码画质参数是固定的 baseline,所以画质通常也一般。因此,在 Android平台下,推荐是用软编,好处是画质可调控,兼容性也更好。
二、在低端设备上进行高性能地采集和编码
例如Camera采集输出的可能是图片,一张图的体积并不会小,如果采集的频次很高,编码的帧率很高,每张图都经过编码器,那么编码器又可能会出现过载。 这个时候,可以考虑在编码前,不影响画质的前提下(前面我们讲过帧率的微观意义),进行选择性丢帧,以此降低编码环节的功耗开销。
三、弱网环境下保障高清流畅推流
移动网络下,通常容易遇到网络不稳定,连接被重置,断线重连,一方面频繁重连,建立连接需要开销。另一方面尤其是发生GPRS / 2G / 3G / 4G 切换时,带宽可能出现瓶颈。当带宽不够,帧率较高/码率较高的内容较难发送出去,这个时候就需要可变码率支持。 即在推流端,可检测网络状态和简单测速,动态来切换码率,以保障网络切换时的推流流畅。 其次编码、封包、推流 这一部分的逻辑也可以做微调,可以尝试选择性丢帧,比如优先丢视频参考帧(不丢I帧和音频帧 ),这样也可以减少要传输的数据内容,但同时又达到了不影响画质和版视听流畅的目的。
在直播源码开发过程中做到以上这些,就能巧妙地避开移动直播场景中的延迟“坑”。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。