前言
5G时代的到来 音视频的崛起 多少又真正了解音视频的开发呢?想学习转行?却还在为技术担忧吗?
音视频学习大纲
小编分享一篇webrtc视频解析
音视频开发第十八讲|CC++程序员进入互联网公司的捷径-WebRTC开发|流媒体|音视频开发|
更多音视频开发、c/c++ Linux服务器高阶知识、电子书籍、视频等等可以点击链接加入群聊【linux后台服务架构交流】
WebRTC的音频引擎作为两大基础多媒体引擎之一,实现了音频数据的采集、前处理、编码、发送、接收、解码、混音、后处理、播放等一系列处理流程。本文在深入分析WebRTC源代码的基础上,学习并总结其音频引擎的实现框架和细节。
1. WebRTC音频引擎整体架构
WebRTC音频引擎的实现代码主要分布在如下几个源码目录中:
webrtc/audio
webrtc/common_audio
webrtc/media/engine
webrtc/voice_engine
webrtc/module/audio_coding
webrtc/module/audio_conference_mixer
webrtc/module/audio_device
webrtc/module/audio_processing
WebRTC音频引擎的整体架构如图1所示。
图1 WebRTC音频引擎的整体架构.png
从整个WebRTC框架结构来看,音频引擎和和视频引擎都位于比较底层的位置,负责音视频数据的采集、编解码、渲染播放等工作。音视频引擎的上一层是多媒体引擎WebRtcMediaEngine2,是对底层音视频引擎VideoEngine的进一步高层抽象,由WebRtcVoiceEngine对VoiceEngine进行封装,WebRtcVideoEngine2对VideoEngine进行封装。
在内部实现上,音频引擎VoiceEngineImpl通过一系列对象来实现音频处理,包括VoEAudioProcessingImpl、VoECodecImpl、VoENet