针对视频直播源码播放的流程,我们可以做哪些优化?

2021-08-26 17:39:20 浏览数 (1)

服务器集群,用于管理主播和主播、主播和连麦者的连线会话,实现音视频云端的调度和计算能力,具体会包括信令服务器,流媒体服务器集群等。

实现就近接入的技术比较广为人知,就是CDN即Content Delivery Network (内容分发网络)。

CDN网络,接收主播和连麦者发送过来的媒体数据,提供缓冲,存储和转发的能力,分发直播内容给观众。

CDN包含两大核心技术:负载均衡和分发网络,随着10多年的演进,对负载均衡和分发的实现方式已多种多样,分发网络的构建策略通常是经过日积月累的总结出一套最合适的分发路由,并且也不是一成不变,需时刻关注调整,动态运营。

与主播的单向直播相比,连麦实现的技术难点增大很多,具体如下:

音频混流,主播将自己的声音与连麦者的声音做混音。

视频混流,主播将自己的画面与连麦者的画面做视频合成。

降噪,去除直播环境中的噪音,啸叫。

回声消除,消除扬声器和麦克风的近端回声。

推流、播放优化

考察发送端系统自带的网络buffer大小,系统可能在发送数据之前缓存数据,这个参数的调优也需要找到一个平衡点。

播放步骤分析:

根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据

解析二进制数据,从中找到相关流信息;

根据不同的封装格式(如FLV、TS)解复用(demux);

分别得到已编码的H.264视频数据和AAC音频数据;

使用硬解码(对应系统的API)或软解码(FFMpeg)来解压音视频数据;

经过解码后得到原始的视频数据(YUV)和音频数据(AAC);

因为音频和视频解码是分开的,所以我们得把它们同步起来,否则会出现音视频不同步的现象,比如别人说话会跟口型对不上;

最后把同步的音频数据送到耳机或外放,视频数据送到屏幕上显示。

0 人点赞