一、搭建環境
我們這里介紹在Windows10+VS2019的環境下編譯WebRTC源碼,由于WebRTC源碼在外網上,需要科學的方式下載,不然下載特別慢,建議直接找國內下載好的源碼,這里的源碼是2021
年的版本:https://pan.baidu.com/s/1oHVz9bxXlW3Q6uO996c5XA#list/path=%2F,提取碼:ojbs
1.1 安裝VS2019
VS2019的安裝比較簡單,可執行安裝,注意的是安裝之后需要在VS Installer中下載Windows 10.0.19041
版本的SDK
,并且下載支持使用C ++進行桌面開發”組件和“ MFC / ATL支持”子組件,因為部分示例需要使用的Win32
和MFC
還需要下載SDK的調試工具:
- 如果通過VS Installer 下載的SDK,可以在控制面板→程序→程序和功能→選擇“ Windows軟件開發工具包”→更改→更改→選中“Windows調試工具” ”→更改。或者,您可以下載獨立的SDK安裝程序,并使用它來安裝調試工具。
1.2 安裝python3
安裝需要先卸載之前的老版本,并安裝3.8以上的版本,主要是python3要求源碼必須下載c盤,下載地址:https://www.python.org/ftp/python/3.8.5/python-3.8.5.exe
1.3 安裝 depot_tools
depot_tools是個工具包,里面包含gclient、gcl、gn和ninja等工具,這些根據都是使用python寫的。其主要的功能是對git的增強,讓代碼管理和編譯更加簡單,要學這個的前提是要會使用git,下載地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip
配置環境變量,這里需要注意,這個位置必須在python和以及git之前
1.4 用gn生成工程和用ninjia編譯工程
下載好的webrtc
源碼,我們進入到webrtc\win\webrtc\webrtc\webrtc-checkout\src
目錄下,命令行在這個路徑下輸入:
取消更新檢查:
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
然后生成解決方案:
gn gen out/X64Debug --winsdk="10.0.19041.0" --ide="vs2019" --args="ffmpeg_branding=\"Chrome\" rtc_use_h264 = true proprietary_codecs=true is_debug=true target_cpu=\"x64\" is_component_build=false use_custom_libcxx = false enable_iterator_debugging=true rtc_enable_protobuf=false"
如果上述環境配置的沒問題,那么等待一會顯示生成成功:
1.5 編譯ninja工程
在生成好的目錄下我們編譯工程,把生成的輸出文件放到當前路徑下的out/X64Debug
中:
ninja -C out/X64Debug
在這期間可能會遇到以下問題:
這段報錯告訴我們這個宏ATOMIC_VAR_INIT(-1)
識別不了,解決方法就是進入到報錯的文件:../../third_party/ffmpeg/libavutil/cpu.c
中,將報錯的地方改為下述代碼:
static atomic_int cpu_flags = -1;
改完后,等待一會,應該就可以成功了
二、測試
編譯好的可執行文件在:src/out/x64Debug
路徑下:
先啟動服務器:
然后啟動兩個客戶端:
第二個客戶端啟動時,點擊連接列表:
如果此時直接閃退,進入到src/modules/video_capture/windows/sink_filter_ds.cc
文件,找到RTC_DCHECK_FUN_ON(&capture_checkr_)
,注釋這一行:
進入到src/out/X64Debug
中,找到all.sln
,使用VS2019
打開,找到peerconnection_clent
項目,然后右鍵設置為啟動項,重寫編譯生成可執行文件
在這里插入圖片描述
按照上述步驟重新啟動服務器和客戶端,沒什么問題的話就能有畫面了:
更多資料:https://github.com/0voice