很多公司使用webrtc來(lái)做音視頻sdk映穗,但是大部分公司在使用上層的api,使用起來(lái)很繁瑣满粗,需要了解很多會(huì)話協(xié)議沟使,《webrtc封裝sdk》系列文章為大家講述一種更簡(jiǎn)單的封裝方法,只需幾天毒返,就可以封裝出一個(gè)sdk租幕。
為何如此簡(jiǎn)單?
本文講述的方法拧簸,不處理會(huì)話管理部分的邏輯劲绪,只針對(duì)音視頻數(shù)據(jù)包,通過(guò)使用webrtc內(nèi)部的c++接口來(lái)實(shí)現(xiàn)音視頻的基本功能狡恬,并且能夠回調(diào)上來(lái)原始的rtp/rtcp數(shù)據(jù)包,也可以傳入接收到的原始數(shù)據(jù)包蝎宇,操作起來(lái)非常簡(jiǎn)單弟劲。
實(shí)現(xiàn)思路
通過(guò)使用webrtc/call.h中的webrtc::Call類來(lái)創(chuàng)建本地和遠(yuǎn)端視頻/音視頻流,產(chǎn)生和接收rtp/rtcp數(shù)據(jù)包姥芥。
call類包括的概念大概有以下幾種:
- VideoSendStream:負(fù)責(zé)產(chǎn)生本地視頻數(shù)據(jù)
- VideoReceiveStream:負(fù)責(zé)處理遠(yuǎn)端某一個(gè)端的視頻數(shù)據(jù)
- AudioSendStream:負(fù)責(zé)產(chǎn)生本地音頻數(shù)據(jù)
- AudioReceiveStream:負(fù)責(zé)接收遠(yuǎn)端某一個(gè)端的語(yǔ)音數(shù)據(jù)
如果你也需要封裝webrtc來(lái)做音視頻sdk兔乞,但是對(duì)最新代碼又不是很了解,可以來(lái)參考我的開(kāi)源項(xiàng)目:
1、https://github.com/zhangpengyf/webrtc-native-example :mac端可以運(yùn)行的demo
master分支演示了如何使用call接口來(lái)封裝sdk庸追,getaudiodata分支霍骄,演示了如何拿到本地采集音頻數(shù)據(jù),和遠(yuǎn)端混音后的原始數(shù)據(jù)淡溯,通過(guò)這些數(shù)據(jù)可以進(jìn)行錄音
2读整、https://github.com/zhangpengyf/foxrtc : 封裝webrtc為一個(gè)音視頻sdk [開(kāi)發(fā)中]
通過(guò)參考我的思路和demo你會(huì)發(fā)現(xiàn)原來(lái)封裝sdk還可以如此簡(jiǎn)單。
編譯技巧
由于只需要使用call api我們只需要編譯call這個(gè)target咱娶,這樣可以節(jié)省三分之二的編譯時(shí)間米间。
編譯命令為:
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
關(guān)鍵詞:webrtc 封裝 sdk webrtc c++ api webrtc call