很多公司使用webrtc來做音視頻sdk,但是大部分公司在使用上層的api,使用起來很繁瑣,需要了解很多會話協議,《webrtc封裝sdk》系列文章爲大家講述一種更簡單的封裝方法,只需幾天,就可以封裝出一個sdk。
爲何如此簡單?
本文講述的方法,不處理會話管理部分的邏輯,只針對音視頻數據包,通過使用webrtc內部的c++接口來實現音視頻的基本功能,並且能夠回調上來原始的rtp/rtcp數據包,也可以傳入接收到的原始數據包,操作起來非常簡單。
實現思路
通過使用webrtc/call.h中的webrtc::Call類來創建本地和遠端視頻/音視頻流,產生和接收rtp/rtcp數據包。
call類包括的概念大概有以下幾種:
-
VideoSendStream:負責產生本地視頻數據
-
VideoReceiveStream:負責處理遠端某一個端的視頻數據
-
AudioSendStream:負責產生本地音頻數據
-
AudioReceiveStream:負責接收遠端某一個端的語音數據
如果你也需要封裝webrtc來做音視頻sdk,但是對最新代碼又不是很瞭解,可以來參考我的開源項目:
1、https://github.com/zhangpengyf/webrtc-native-example :mac端可以運行的demo
master分支演示瞭如何使用call接口來封裝sdk,getaudiodata分支,演示瞭如何拿到本地採集音頻數據,和遠端混音後的原始數據,通過這些數據可以進行錄音
2、https://github.com/zhangpengyf/foxrtc : 封裝webrtc爲一個音視頻sdk [開發中]
通過參考我的思路和demo你會發現原來封裝sdk還可以如此簡單。
編譯技巧
由於只需要使用call api我們只需要編譯call這個target,這樣可以節省三分之二的編譯時間。
編譯命令爲:
gn gen out/mac_Debug --ide=xcode --args=‘is_debug=false rtc_enable_protobuf=false rtc_include_tests=false’
ninja -C out/mac_Debug call
關鍵詞:webrtc 封裝 sdk webrtc c++ api webrtc call