最近一直在調試在WebRTC中添加對H.264的支持,過程涉及代碼下載、翻牆、服務器連接、Linux系統操作以及故障方案解決等,我會一一記錄下來,方便以後查閱!首先,介紹一些預備知識:
-
首先對應的codec的形式:
VP8編碼用VP8解碼
VP9編碼用VP9解碼
H264編碼用H264解碼
另外,以上三種均可用FFMPEG解碼 -
這篇文字有介紹windows下webRTC代碼的下載
代碼量巨大(20G左右),主要是依賴庫的代碼多,需要耐心等待。(可以在官網獲取,需要翻牆!) -
https://github.com/pristineio/webrtc-build-scripts
WebRTC可以在android、ios、linux下的編譯腳本
android的編譯必須在linux中進行
ios 的編譯必須在xcode中進行 -
http://www.zhuli8.com/2015/07/19/構建支持armv7和arm64的webRTC靜態庫/
將webRTC編譯,作用不大,僅做參考。
以下爲本人在windows平臺編譯WebRTC的步驟,
環境:windows10 x64 + VMvare + Ubuntu 16.04.2
獲取代碼
獲取代碼的步驟參考我上面提供的文章可以獲取到最新的2018年的代碼,注意時間,不同時間的操作可能會有不同!因爲google的代碼所有必須要做好能翻牆的準備,否則從國內下載別人已經做好了vs工程的代碼。
- 注意
最新的M70版本,2018年10月10日發佈的WebRTC——M70,有一個大的變化,就是android上軟編碼默認給去了,如果一直用的是硬編碼,可以忽略。 - 安裝最新的python(建議2.7版本), git工具
- 官方下載depot_tools,安裝或者解壓,並將路徑加入系統環境變量中,在一個適當得目錄下clone depot_tools包,後面會用到此工具。
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
然後修改.bashrc文件,將depot_tools的路徑加進環境變量PATH中:
export PATH=“$PATH:‘pwd’/depot_tools”
# ‘pwd’代表depot_tools的路徑,直接替換即可
- 在上述過程中,我遇到了權限問題和環境變量問題
我是這麼解決的
sudo su
# 輸入你的密碼即可進入root用戶操作界面
參考鏈接:su和sudo的區別
- 具體操作
# Create a working directory, enter it, and run fetch webrtc
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
# 進入src目錄,獲取WebRTC版本信息
cd src
git branch -r
# 選取版本信息中的‘branch-heads/xx’,直接複製到下面的代碼塊中
# 其中xx是最新的分支,git branch -r查看
# my_branch是文件夾名,可以任意替換
# Choose the stable release 57 rather than the most recent release by entering
git checkout branch-heads/xx
# 更新代碼(很好的一個命令)
gclient sync
- 以下是WebRTC官網提供的方法:
編譯
編譯時每個人遇到問題可能不盡相同,只能遇到問題解決問題。
- 按照Vinton.Liu給的方法,我修改了關於修改h264的代碼
- 直接執行以下指令,可以跑通:
# git代碼
git checkout -b branches_63 refs/remotes/branch-heads/63
gclient sync
# 解壓(第一次tar時,遇到了無法mkdir的問題,尚未解決!)
cat branches_630* | tar -zx
#添加路徑
export PATH=“$PATH:‘pwd’/depot_tools”
# 編譯
gn gen out/文件名 --args=參數設置
ninja -C out/文件名
# 可以順利完成編譯
- 現在開始修改代碼(使用Vim編輯 Link)
然後無法跑通,出現以下差錯
分析原因:沒安裝依賴吧,webrtc有個android腳本安裝依賴
# webrtc/src目錄中執行這個
./build/install-build-deps-android.sh
- 如何查看文件修改(如何撤銷修改,請查詢git命令)
git的使用:git show; git log; git diff(鏈接戳下)
Link
# ‘pwd’是文件的具體路徑
git diff 'pwd'
- 2018年10月13日,失敗若干次後,再次創建新的虛擬機。導入63版本的代碼,進行修改。
出現新的問題:ubuntu系統中的文件均被上鎖
現象描述:文件夾上有一把小鎖
解決方案:
# *代表所有,將當前目錄下所有文件都給予777權限
chmod -R 777 *
# 4代表讀,2代表寫,1代表執行
鏈接:留坑