如何搭建視頻通信系統——windows篇 頂 原

視頻通信系統是我們在日常生活中經常使用的,大家有沒有想過搭建一套屬於自己的視頻通信系統呢?今天就來和大家介紹介紹兩款免費 windows 版視頻通信系統 SDK 的搭建。

Webrtc

Webrtc(webrtc.org)的編譯對於開發主機的性能,網絡帶寬的要求都非常高。另外,在Windows 平臺下,它對 Windows 的系統版本,Visual Studio 版本也都有明確的要求,只要其中某一項出問題了,都可能導致失敗。因此在準備環節需要確定主機和系統配置

 

一、準備

 

1、要求

1)安裝好 VPN,確保網絡順暢

2)64 位機器、8G 及以上內存、100G 及以上磁盤空間、NTFS 格式;

3)安裝 Visual Studio 2015 Update 3

4)操作系統:Windows 7 及以上的英文版本(注意windows只能是英文版本)

 

2、下載 depot-tools

下載地址:storage.googleapis.com/

注意設定好解壓文件夾,要不當前文件夾會文件太多弄混。

 

3、配置 depot-tools 環境變量

計算機——屬性——高級——環境變量——path

注意:必須將它放在 path 環境變量的開頭

 

4、將 depot-tools 配置到系統環境變量裏

depot_tools 使用 Google 內部版本。

 

二、下載源碼

 

創建webrtc目錄:

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc

 

你可以選擇的目錄:

git config branch.autosetupmerge always
git config branch.autosetuprebase always

 

或者創建新的目錄:

cd src
git checkout master
git new-branch your-branch-name
gclient sync 

 

三、編譯

 

1、獲取 Ninja 工程文件:

https://ninja-build.org/

Ninja 是 Chromium 社區開發的一套 build system,非常適合 webrtc

 

2、執行下面的命令進行 Webrtc 編譯 cd src

gn gen out/Default

編譯成功後,執行下面的命令生成 vs 工程文件

gn gen--ide=vs  out\Default

這時,我們就可以在 src\out\Default\ 目錄下找到 all.sln 這個工程文件。因爲 webrtc 的文檔很多,強烈建議大家上 webrtc 的官網,根據官網的步驟一步一步操作,不要着急。 https://webrtc.org/native-code/development/

說完 webrtc 的方案,接下來我們看看 tucodec

 

Tucodec

 

一、準備:

1、首先在圖鴨官網:http://tucodec.com 進行註冊,獲得 SDK 中所需要的 APPKey、AppSecret,註冊登錄後如下圖所示:

圖1 註冊後獲取AppKey、AppSecret

點擊 SDK 下載按鈕跳轉到下載界面,選擇下載 Windows 中所需 SDK 和 Demo。

圖2 SDK下載展示

如圖所示我們提供了 vs2013 版本和 vs2015 版本的 SDK 及相應的 WinDemo。

圖3 SDK解壓後內容

 

2、下載 visual studio 開發工具並安裝,因爲 vs2013 和 vs2015 自帶的一些庫和編譯選項有些許不同,所以必須選擇與 SDK 匹配的 vs工具進行開發。

3、安裝完成後雙擊打開圖3中的 WinDemo.sln,便可以看到如圖4的工程界面,把生成類型調整爲 Debug/x86,然後編譯 WinDemo 項目。

圖4 WinDemo項目截圖

4、在 vs 中點擊“本地調試器”即可運行本 demo,main 函數的兩個參數已在工程配置選項中賦予,如圖5所示

圖5 項目裏的main參數設置

 

或者手動將 opencv 和 Tucodec_SDK_Windows 的 bin 目錄下的文件拷貝到 exe 所在的目錄。然後在該文件夾下打開“命令提示符”或者“Windows PowerShell”,在命令行下面賦予 WinDemo.exe 兩個參數,分別是自己的 ID 和對方的 ID,然後運行即可。如圖6所示

圖6 在命令行中打開WinDemo.exe,效果和上面一樣

 

5、SDK相關說明在《Windows端VoIP SDK使用說明》一文,已經做了詳細介紹,本文接下來主要介紹 WinDemo 的代碼結構,方便開發者理清開發流程。

 

二、WinDemo介紹

 

總的來說,Windows 端的音視頻通信系統主要包括音視頻採集、音視頻播放和 VoIP 負責的音視頻傳輸三個模塊。利用圖鴨科技提供的 SDK 及由圖鴨科技公司開源的轉發服務器代碼(tucodec.com),開發者可以搭建自己的音視頻通信服務器。因此,開發者主要面對的問題就是 Windows 端的音視頻採集與播放問題,也是本文着重介紹的地方。

1、視頻採集和播放

有經驗的開發者看到壓縮包內的 opencv 目錄便知道了在本 Demo 中對視頻的處理藉助了 opencv 的幫助,其優點是可以非常方便的進行視頻採集和播放,爲開發者屏蔽了與 Windows 硬件交互的諸多繁雜任務。Demo 中的 CVideoCap 和 CVideoRender 兩個類就是利用了 opencv 庫進行視頻的採集和渲染。

當然,opencv 有一個比較大的缺點兒就是耗費系統資源比較多,如果電腦配置一般的話會發現開啓 opencv 渲染視頻後電腦的 CPU 負荷會出現大幅上漲。所以如果想把我們的 SDK 用於產品研發的話,推薦自己實現客戶端的採集和播放功能,常用的有 DirectShow,SDL,DirectX SDK 等官方提供的 SDK。

2、音頻採集和播放

由於 opencv 不能完成音頻相關的處理任務,所以 Demo 中使用了微軟提供的 Windows MultiMedia 相關 API 完成音頻採集和渲染功能,詳見 Demo 中的 CAudioCap 和 CAudioRender 兩個類。

音視頻採集與播放的類關係如下圖所示:

圖7 音視頻採集和播放的UML類圖

 

3、CVoipManager 類

這個類封裝了音視頻操作與 VoIP 之間的交互,是整個 Demo 的核心部分。其類圖如下所示:

圖8 CVoIPManager類圖

 

部分方法和屬性介紹:

m_clientNetwork:ClientNetwork 實例,負責轉發服務器的登錄

m_voip:TYVoip 實例,負責打通數據傳輸

m_voipCallback:TYVoip 中的接口實現,是 voip 的視頻回調接口,客戶端從這個類中獲得voip 傳過來的視頻數據

m_selfID:本地的 usrID

m_sessionID:會話 ID

m_audioCap,m_audioRender,m_videoCap,m_videoRender:音視頻採集渲染

m_ac,m_ai,m_vc,m_vi:音視頻格式配置

m_nodeList:添加的通信節點列表

LoginServer:登錄轉發服務器(轉發服務器需要提前配置好),因爲是通過轉發服務器做數據傳輸或 P2P 打洞,所以在添加對方爲節點的時候要保證兩者都是在線狀態,當然這個在登錄模塊做了處理,如果對方還沒上線會一直請求下去。

AddNote:添加一個通信節點

RemoveNote:移除一個通信節點

StartVoipTransmit:開始音視頻採集和渲染以及傳輸

EndVoipTransmit:結束音視頻採集和渲染以及傳輸

 

總結

webrtc 被越來越多的團隊使用,但是其幾 G 的源代碼也是讓人頭疼,建議大家可以上 github 上搜索其他團隊給出的編譯結果,有精力的朋友最好還是選擇自己上官網下載、編譯,畢竟搜索出來的信息相對都比較陳舊。 tucodec 作爲纔出來沒多久的產品,其文檔的不夠豐富,也增加了一些編譯難度,建議編譯的朋友,可以加他們的羣,這樣如果在編譯時遇到問題,可以直接詢問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章