webrtc封裝sdk(一)思路

很多公司使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章