webrtc完整編譯記錄


有關Webrtc后續,可關注公眾號:音頻探險記

概述

webrtc可以說是音視頻領域的百科全書了,集音視頻采集、音頻處理、編解碼、傳輸、渲染於一體。之前一直想完整的編譯它來着,但因為各種各樣的原因沒有編譯成功,(沒有梯子代碼下不完整;編譯環境搭建不完全)。上次偶爾在知乎上看到了一種下載webrtc代碼的方法,故抱着嘗試的心態又整了一把,沒想到編譯成功了。所以寫下此文記錄一下編譯過程。本文主要包括以下幾個部分: |

  • webrtc代碼獲取
  • 編譯環境配置
  • 生成vs工程

代碼獲取

有關webrtc的源代碼獲取方式可以借鑒下列知乎鏈接上的方法,首先在阿里雲上申請一台國外的主機,下載完代碼后再上傳至百度雲,然后再下載到本地進行編譯,具體方法如下。

https://zhuanlan.zhihu.com/p/357634816

也可以直接從下面的百度雲上下載代碼,代碼的版本應該是2021.3.15的更新版本。

鏈接:https://pan.baidu.com/s/1eaaZOmkTXZ4BI6wCoFu0nw
提取碼:webr
復制這段內容后打開百度網盤手機App,操作更方便哦

編譯環境配置

在代碼下載的過程中可以着手進行編譯環境的配置了,主要的工具包括如下:

  • visual studio 2019 community
  • depot_tools - git

git的安裝方式就不再贅述了,官網上下載個安裝文件一路next就可以了。接下來重點介紹depot_tools和vs2019的配置。

depot_tools

直接使用如下命令下載depot_tools(所提供的webrtc代碼中包含了該depot_tools,下載步驟可以跳過,直接進行depot_tools的配置)

git clone https://webrtc.bj2.agoralab.co/webrtc-mirror/depot_tools.git

下載完成后進行兩個步驟:(1)將其路徑添加到環境變量中,(2)新建環境變量depot_tools,並設置其路徑。

以及path中的新建,並將其移動到最前面。

這樣depot_tools的配置就結束了。接下來是vs2019的配置.

vs2019

安裝時選擇如下,重點勾選使用C++的桌面開發,.Net桌面開發可以不用點(我這里是誤點了)。

安裝完成后(記住vs的安裝路徑)還需要安裝SDK調試工具。首先進入到軟件卸載的那個界面,右鍵點擊Windows Software Development Kit並選擇更改,然后選擇 Change-->Debugging Tools for Windows,選擇應用更改即可完成SDK調試工具的安裝。注意該調試工具的安裝路徑,一般會是在C:\Program Files (x86)\Windows Kits,我pc上是安裝在D:\Windows Kits上。 |

上述步驟完成后開始進行環境變量的設置,主要變量如下:

變量名 變量值
DEPOT_TOOLS_WIN_TOOLCHAIN 0
GYP_GENERATORS msvs-ninja,ninja
GYP_MSVS_OVERRIDE_PATH C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
GYP_MSVS_VERSION 2019
WINDOWSSDKDIR D:\Windows Kits\10

編譯環境的配置基本上就完成了(具體的路徑需要自己修改),接下來就可以開始編譯webrtc代碼了。

生成vs工程

解壓下載的webrtc源代碼,得到如下三個文件夾

進入到webrtc_checkout\src目錄下右鍵git bash。Webrtc默認使用Ninja作為編譯系統,Ninja工程文件通過GN生成,由於需要生成vs2019工程文件,所以使用GN生成Ninja工程時需要配置--ide=vs生成vs文件。首先使用如下命令生成all.sln文件。

gn gen --ide=vs out/Default

將會默認在out/Default下生成all.sln工程文件。提示如下信息表示vs工程生成成功。

vs工程生成成功后,接着就可以進行編譯了,執行如下命令:

ninja -C out/Default

總共有5251個文件需要處理,編譯的時長看電腦配置,我的amd3600 cpu占用率直接拉滿,飆到了4.06GHz,大概十幾分鍾后編譯完成。用vs2019打開out\Default下的vs工程文件all.sln, 並重新生成解決方案,靜待一首歌的時間。

可以看到解決方案下的多個工程,以及生成解決方案無報錯產生,至此可以大聲的宣布,老子終於把webrtc編譯成功了。不過還需要做最后一步,將sink_filter_ds.cc中第724行的代碼注釋掉。不然運行peerconnection_client.exe和peerconnection_server.exe時會出現閃退。

RTC_DCHECK_RUN_ON(&capture_checker_);--> //RTC_DCHECK_RUN_ON(&capture_checker_);

可以看到左圖的客戶端和右圖的服務端都能正常運行,至此大功告成。webrtc里面的干貨太多了,編譯成功只是第一步,接下來就是抽絲剝繭的過程了。
參考鏈接

【1】https://blog.jianchihu.net/windows-webrtc-build.html

【2】https://www.cnblogs.com/Johness/p/webrtc-compile-on-windows.html

【3】https://zhuanlan.zhihu.com/p/357634816


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM