mediasoup 相關(guān)編譯

### mediasoup編譯及注意事項


Mediasoup c++ demo編譯總體流程為 webrtc -> mediasoup-demo -> Mediasoup-broadcaster-demo

整體流程參考文檔: http://www.reibang.com/p/00cc45ea4620

Webrtc

地址:https://webrtc.googlesource.com/src.git

參考文檔: https://mediasoup.org/documentation/v3/libmediasoupclient/installation/


$ mkdir -p /data/webrtc

$ cd /data/webrtc

# 檢出depot_tools工具

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

# 獲取webrtc源碼,同時會拉取依賴

$ fetch --nohooks webrtc

$ cd src

# 切換到m94分支

$ git checkout -b m94 refs/remotes/branch-heads/4606

# 獲取m94分支最近一次的提交記錄時間點(diǎn)

$ COMMIT_DATE=$(git log -n 1 --pretty=format:%ci)

# 更改depot_tools工具到和webrtc分支m94比較靠近的時間點(diǎn)

$ cd ../depot_tools

# Check out depot_tools revision from the same time:

$ git checkout $(git rev-list -n 1 --before="$COMMIT_DATE" main)

# 不更新depot_tools版本

$ export DEPOT_TOOLS_UPDATE=0

# 切換到webrtc編譯目錄

$ cd ../src

# 這里主要是runhook,視網(wǎng)絡(luò)情況耗時可能比較長

$ gclient sync

# 編譯參數(shù)設(shè)定, 輸出在out/m94目錄

$ gn gen out/m94 --args='is_debug=false is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true'

# 開始編譯

$ ninja -C out/m94


關(guān)于頭文件提热唇簟:

native-api的說明: https://webrtc.googlesource.com/src/+/HEAD/native-api.md

注意:需要在gclient sync同步完成后執(zhí)行腳本, 因為有些依賴不在webrtc倉庫中胎撤,而在第三方依賴中晓殊。

創(chuàng)建一個空目錄, 將下面腳本復(fù)制并執(zhí)行哩照, 注意可能需要修改webrtc_path為實際的webrtc的目錄



#!/bin/bash

#

webrtc_path="/data/webrtc/src"

cp -a ${webrtc_path}/api .

find api -type f? -name "*.cc" -delete

find api -type f? -name "*.gn" -delete

base_dir_lists=(

"common_audio/include"

"media/base"

"media/engine"

"modules/audio_coding/include"

"modules/audio_device/include"

"modules/audio_processing/include"

"modules/congestion_controller/include"

"modules/include"

"modules/rtp_rtcp/include"

"modules/rtp_rtcp/source"

"modules/utility/include"

"modules/video_coding/codecs/h264/include"

"modules/video_coding/codecs/vp8/include"

"modules/video_coding/codecs/vp9/include"

"modules/video_coding/include"

"pc"

"rtc_base"

"system_wrappers/include"

)

for i in ${base_dir_lists[@]}

do

? mkdir -p ${i}

? cp -f ${webrtc_path}/${i}/*.h ${i}/

done

for r in $(seq 10)

do

? echo "round ========= ${r} =========="

? for i in $(grep -r '^#include' |awk '{print $2}' |grep -v '<' |tr -d '"' |grep -v '^api/' |grep -v '^\.\.' |sort |uniq)

? do

? ? #echo "file: ${i}, dir:$(dirname ${i}), name: $(basename ${i})"

? ? if [[ -e ${i} || $(dirname ${i}) == '.' ]]; then

? ? ? continue

? ? fi

? ? echo ${i}

? ? for j in $(find ${webrtc_path} -name "$(basename ${i})")

? ? do

? ? ? if echo ${j} |grep -q "${i}"; then

? ? ? ? mkdir -p $(dirname ${i})

? ? ? ? cp ${j} $(dirname ${i})/

? ? ? fi

? ? done

? done

done


可選操作步驟(和上面編譯操作互斥挺物, 只需要選一個執(zhí)行):

不使用fetch命令下載源碼, 通過手動下載并設(shè)定指定分支飘弧, 然后通過gclient sync進(jìn)行依賴同步



mkdir -p /data/webrtc

cd /data/webrtc

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

git clone https://webrtc.googlesource.com/src.git

export PATH=/data/webrtc/depot_tools:$PATH

gclient config --name src --unmanaged? https://webrtc.googlesource.com/src.git

cd /data/webrtc/src

git fetch origin +refs/branch-heads/*:refs/remotes/branch-heads/*

git checkout -b m94 refs/remotes/branch-heads/4606

COMMIT_DATE=$(git log -n 1 --pretty=format:%ci)

cd /data/webrtc/depot_tools

git checkout $(git rev-list -n 1 --before="$COMMIT_DATE" main)

export DEPOT_TOOLS_UPDATE=0

cd /data/webrtc/src

gclient sync --no-history

gn gen out/m94 --args='is_debug=false is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true'

ninja -C out/m94



libmediasoupclient (可選)

下面步驟的Mediasoup-broadcaster-demo自帶編譯了libmediasoupclient依賴, 所以這項不是必須砚著, 僅用作檢驗Webrtc編譯是否正常



$ cd /data/webrtc

$ git clone https://github.com/versatica/libmediasoupclient.git

# 具體是否切換分支視情況而定次伶, 一般情況就是v3, 不需要切換

$ cd libmediasoupclient

$ cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH:PATH=/data/webrtc/src -DLIBWEBRTC_BINARY_PATH:PATH=/data/webrtc/src/out/m94/obj

$ make -C build/



mediasoup-demo

mediasoup-demo是基于nodejs的, 依賴nodejs 版本 >= v16.0.0稽穆。

下一步操作的Mediasoup-broadcaster-demo需要依賴這里的服務(wù)端冠王;

同時mediasoup-demo的客戶端打開web瀏覽器頁面可以提供一個roomid給下一步mediasoup-broadcaster-demo使用

具體流程可以參考官方github文檔: https://github.com/versatica/mediasoup-demo




$ cd /data/webrtc

$ git clone https://github.com/versatica/mediasoup-demo.git

$ cd mediasoup-demo

$ git checkout v3

# 服務(wù)端編譯:

$ cd /data/webrtc/mediasoup-demo/server

$ npm --registry=https://registry.npmmirror.com install

# 客戶端編譯:

$ cd /data/webrtc/mediasoup-demo/app

# For node 16

$ npm --registry=https://registry.npmmirror.com install

# For node 18, use legacy peer dependencies

$ npm --registry=https://registry.npmmirror.com install --legacy-peer-deps?

# 服務(wù)端本地運(yùn)行:

$ cd /data/webrtc/mediasoup-demo/server

$ cp config.example.js config.js

# 運(yùn)行服務(wù)端需要提供一個證書密鑰對:fullchain.pem 和 privkey.pem

# 運(yùn)行前需要確保webRtcServerOptions和webRtcTransportOptions地址正確,否則可能出現(xiàn)無畫面情況

$ npm start

# 客戶端本地運(yùn)行(新開一個窗口):

$ cd /data/webrtc/mediasoup-demo/app

$ npm start




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舌镶,一起剝皮案震驚了整個濱河市柱彻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌餐胀,老刑警劉巖哟楷,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異否灾,居然都是意外死亡卖擅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門墨技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惩阶,“玉大人,你說我怎么就攤上這事扣汪《峡” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵崭别,是天一觀的道長冬筒。 經(jīng)常有香客問我统刮,道長,這世上最難降的妖魔是什么账千? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任侥蒙,我火速辦了婚禮,結(jié)果婚禮上匀奏,老公的妹妹穿的比我還像新娘鞭衩。我一直安慰自己,他們只是感情好娃善,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布论衍。 她就那樣靜靜地躺著,像睡著了一般聚磺。 火紅的嫁衣襯著肌膚如雪坯台。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天瘫寝,我揣著相機(jī)與錄音蜒蕾,去河邊找鬼。 笑死焕阿,一個胖子當(dāng)著我的面吹牛咪啡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暮屡,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼撤摸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了褒纲?” 一聲冷哼從身側(cè)響起准夷,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莺掠,沒想到半個月后衫嵌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汁蝶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年渐扮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掖棉。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡墓律,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幔亥,到底是詐尸還是另有隱情耻讽,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布帕棉,位于F島的核電站针肥,受9級特大地震影響饼记,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慰枕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一具则、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧具帮,春花似錦博肋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掘猿,卻和暖如春病游,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稠通。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工衬衬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人采记。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓佣耐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唧龄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容