项目中直播实现的原理解析
最近项目中涉及到了直播这快的内容,所以针对平时开发中的问题以及采用的技术做一波分享,希望对大家有所帮助。
1、直播视频从技术架构角度主要分为三个部分:
直播视频采集SDK=>直播CDN(也即直播流分发加速)=》直播视频播放器SDK
2、音视频处理的一般流程:
数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示
1、数据采集:
摄像机及拾音器收集视频及音频数据,此时得到的为原始数据,要用到摄像机和拾音器。
2、数据编码:
使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合、打包封装等),得到可用的音视频数据,编码的方式:CBR、VBR,编码格式分为音频和视频,音频一般有MP3、OGG、AAC,视频一般有TS、MKV、AVI、MP4等。
3、数据传输:
将编码完成后的音视频数据进行传输,早期的音视频通过同轴电缆之类的线缆进行传输,IP网络发展后,使用IP网络优传输
涉及技术或协议:
传输协议:RTP与RTCP、RTSP、RTMP、HTTP、HLS(HTTP Live Streaming)等
控制信令:SIP和SDP、SNMP等
4、解码数据:
使用相关硬件或软件对接收到的编码后的音视频数据进行解码,得到可以直接显示的图像/声音
涉及技术或协议:
一般对应的编码器都会带有相应的解码器,也有一些第三方解码插件等
5、播放显示:
在显示器(电视、监视屏等)或扬声器(耳机、喇叭等)里,显示相应的图像画面或声音
涉及技术或协议:
显示器、扬声器、3D眼镜等