最新 WebRTC 源码目录结构分析
前言
最近一直在研究 WebRTC源碼,發現目前網上分析WebRTC源碼的資料非常少。隨著Google不斷推進WebRTC標準,WebRTC 代碼的變化非常大,很多以前的分析文章目前都與最新的代碼無法對應上了。
所以,我想在分析WebRTC代碼的過程中,將自己的一些分析心得寫下來分享給大家,這樣即是對自己的一種鞭策,同時也可以幫助那些想入門的同學。
當然,我寫的分析文章不見得十分正確,如有不對的地方還請大家多多指正。
目錄結構分析
api
WebRTC 接口層。包括 DataChannel, MediaStream, SDP相關的接口。各瀏覽器都是通過該接口層調用的 WebRTC。
call
存放的是 WebRTC “呼叫(Call)” 相關邏輯層的代碼。
audio
存放音頻網絡邏輯層相關的代碼。音頻數據邏輯上的發送,接收等代碼。
video
存放視頻邏輯層及視頻引擎層的相關的代碼。視頻數據邏輯上的發送,接收等代碼。
視頻引擎層就是指如何控制視頻采集,處理和編解碼操作的邏輯。
voice_engine
存放音頻引擎代碼。主要是控制音頻的采集,處理,編解碼的操作。
這個目錄后面可能也會被拿掉。
sdk
存放了 Android 和 IOS 層代碼。如視頻的采集,渲染代碼都在這里。
pc
存放一些業務邏輯層的代碼。如 channel, session等。
common_audio
存放一些音頻的基本算法。包括環形隊列,博利葉算法,濾波器等。
common_video
存放了視頻算法相關的常用工具,如libyuv, sps/pps分析器,I420緩沖器等。
modules
這個目錄是 WebRTC 代碼中最重要的一個目錄。里面包括了音視頻的采集,處理,編解碼器,混音等。
視頻的渲染部分已經從這里刪除了。因為沒有瀏覽器需要用到這里的渲染代碼。如果使用Native API 做二次開發,需要自己寫視頻渲染相關的代碼。
modules 目錄下還包括以下幾個子目錄:
audio_coding :?音頻編解碼相關代碼。
audio_conference_mixer :?會議混音相關代碼。
audio_device :?音頻采集與音頻播放相關代碼。
audio_mixer :?混音相關代碼,這部分是后加的。
audio_processing :?音頻前后處理的相關代碼。
bitrate_controller :?碼率控制相關代碼。
congestion_controller :?流控相關的代碼。
desktop_capture :?桌面采集相關的代碼。
media_file :?播放媒體文件相關的代碼。
pacing :?碼率探測相關的代碼。
remote_bitrate_estimator :?遠端碼率估算相關的代碼。
rtp_rtcp :?rtp/rtcp協議相關代碼。
video_capture :?視頻采集相關的代碼。
video_coding :?視頻編解碼相關的代碼。
video_processing :?視頻前后處理相關的代碼。
media
存放媒體相關的代碼。
p2p
p2p相關的代碼。
rtc_base
存放了一些基礎代碼。如線程,事件,socket等相關的代碼。
rtc_tools
存放了一些工具代碼。如視頻幀比較,I420轉RGB,視頻幀分析。
stats
存放各種數據統計相關的類。
libjingle
網絡庫。
system_wrapper
與操作系統相關的代碼,如 CPU特性,原子操作,讀寫鎖,時鐘等。
總結
以上是生活随笔為你收集整理的最新 WebRTC 源码目录结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动直播连麦实现思路:整体篇
- 下一篇: 浅析低延迟直播协议设计:RTP/RTCP