webrtc源码⽬录结构分析及各模块介绍
webrtc开源代码阅读1 分享
⼀、简介。
WebRTC是⼀项在浏览器内部进⾏实时视频和⾳频通信的技术,是⾕歌2010年以6820万美元收购收购Global IT Solutions公司⽽获得⼀项技术。
⼆、源码分析:
WebRTC源码⽂件如下:
1,总体上,WebRTC提供了视频会议的核⼼技术,包括⾳视频的采集、编解码、⽹络传输、显⽰等功能,并且还⽀持跨平台:windows,linux,mac,android等操作系统。
2,WebRTC视频处理分析:
WebRTC视频部分主要包括采集、编解码(I420/VP8)、加密、媒体⽂件、图像处理、显⽰、⽹络传输与流控(RTP/RTCP)等功能。
视频采集--video_capture:
源代码在webrtc\modules\video_capture\main⽬录下,包含接⼝和各个平台的源代码。如图所⽰:
在windows平台上,WebRTC采⽤的是dshow技术,来实现枚举视频的设备信息和视频数据的采集,这意味着可以⽀持⼤多数的视频采集设备;对那些需要单独驱动程序的视频采集卡(⽐如海康⾼清卡)就⽆能为⼒了。
视频采集⽀持多种媒体类型,⽐如I420、YUY2、RGB、UYUY等,并可以进⾏帧⼤⼩和帧率控制。
视频编解码---video_coding
源代码在webrtc\modules\video_coding⽬录下。如图所⽰:
WebRTC采⽤I420/VP8编解码技术。VP8是google收购ON2后的开源实现,并且也⽤在WebM项⽬中。VP8能以更少的数据提供更⾼质量的视频,特别适合视频会议这样的需求。
视频加密--video_engine_encryption
源代码在webrtc\video_engine\main中
视频加密是WebRTC的video_engine⼀部分,相当于视频应⽤层⾯的功能,给点对点的视频双⽅提供了数据上的安全保证,可以防⽌在Web上视频数据的泄漏。
视频加密在发送端和接收端进⾏加解密视频数据,密钥由视频双⽅协商,代价是会影响视频数据处理的性能;也可以不使⽤视频加密功能,这样在性能上会好些。
视频加密的数据源可能是原始的数据流,也可能是编码后的数据流。估计是编码后的数据流,这样加密代价会⼩⼀些,需要进⼀步研究。
视频媒体⽂件--media_file
源代码在webrtc\modules\media_file⽬录下。
该功能是可以⽤本地⽂件作为视频源,有点类似虚拟摄像头的功能;⽀持的格式有Avi。另外,WebRTC还可以录制⾳视频到本地⽂件,⽐较实⽤的功能。
视频图像处理--video_processing
源代码在webrtc\modules\video_processing⽬录下。
视频图像处理针对每⼀帧的图像进⾏处理,包括明暗度检测、颜⾊增强、降噪处理等功能,⽤来提升视频质量。
视频显⽰--video_render
源代码在webrtc\modules\video_render⽬录下。
在windows平台,WebRTC采⽤direct3d9和directdraw的⽅式来显⽰视频,只能这样,必须这样。
⽹络传输与流控
源代码在
对于⽹络视频来讲,数据的传输与控制是核⼼价值。WebRTC采⽤的是成熟的RTP/RTCP技术。
3,WebRTC的⾳频处理分析:
WebRTC的⾳频部分,包含设备、编解码(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、声⾳⽂件、声⾳处理、声⾳输出、⾳量控制、⾳视频同步、⽹络传输与流控(RTP/RTCP)等功能。
⾳频设备---audio_device
源代码在webrtc\modules\audio_device\main⽬录下,包含接⼝和各个平台的源代码。
在windows平台上,WebRTC采⽤的是Windows Core Audio和Windows Wave技术来管理⾳频设备,还提供了⼀个混⾳管理器。
利⽤⾳频设备,可以实现声⾳输出,⾳量控制等功能。
⾳频编解码---audio_coding
源代码在webrtc\modules\audio_coding⽬录下。
WebRTC采⽤iLIBC/iSAC/G722/PCM16/RED/AVT编解码技术。
WebRTC还提供NetEQ功能---抖动缓冲器及丢包补偿模块,能够提⾼⾳质,并把延迟减⾄最⼩。
另外⼀个核⼼功能是基于语⾳会议的混⾳处理。
声⾳加密--voice_engine_encryption
源代码在webrtc\voice_engine\main
和视频⼀样,WebRTC也提供声⾳加密功能。
声⾳⽂件--media_file
源代码在webrtc\modules\media_file⽬录下
该功能是可以⽤本地⽂件作为⾳频源,⽀持的格式有Pcm和Wav。同样,WebRTC也可以录制⾳频到本地⽂件。
声⾳处理--audio_processing
webrtc浏览器源代码在webrtc\modules\audio_processing⽬录下。
声⾳处理针对⾳频数据进⾏处理,包括回声消除(AEC)、AECM、⾃动增益(AGC)、降噪处理等功能,⽤来提升声⾳质量。
⽹络传输与流控
和视频⼀样,WebRTC采⽤的是成熟的RTP/RTCP技术。
4,在webrtc\peerconnection⽂件夹下有⼀个通讯的例⼦。
后续准备将每⼀个模块详细的分析⼀下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。