成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

從0開(kāi)始,搭建一個(gè)完整的Windows音視頻通信系統(tǒng)

cikenerd / 968人閱讀

摘要:本文簡(jiǎn)單講解一下如何在系統(tǒng)上搭建音視頻通訊系統(tǒng)。二介紹總的來(lái)說(shuō),端的音視頻通信系統(tǒng)主要包括音視頻采集音視頻播放和負(fù)責(zé)的音視頻傳輸三個(gè)模塊。利用圖鴨科技提供的及由圖鴨科技公司開(kāi)源的轉(zhuǎn)發(fā)服務(wù)器代碼,開(kāi)發(fā)者可以搭建自己的音視頻通信服務(wù)器。

本文簡(jiǎn)單講解一下如何在Windows系統(tǒng)上搭建音視頻通訊系統(tǒng)。

一、準(zhǔn)備:

1、首先在圖鴨官網(wǎng):http://tucodec.com 進(jìn)行注冊(cè),獲得SDK中所需要的APPKey、AppSecret,注冊(cè)登錄后如下圖所示:

點(diǎn)擊SDK下載按鈕跳轉(zhuǎn)到下載界面,選擇下載Windows中所需SDK和Demo。

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

2、下載visual studio開(kāi)發(fā)工具并安裝,因?yàn)関s2013和vs2015自帶的一些庫(kù)和編譯選項(xiàng)有些許不同,所以必須選擇與SDK匹配的VS工具進(jìn)行開(kāi)發(fā)。

3、安裝完成后雙擊打開(kāi)圖3中的WinDemo.sln,便可以看到如圖4的工程界面,把生成類(lèi)型調(diào)整為Debug/x86,然后編譯WinDemo項(xiàng)目。

4、在vs中點(diǎn)擊“本地調(diào)試器”即可運(yùn)行本demo,main函數(shù)的兩個(gè)參數(shù)已在工程配置選項(xiàng)中賦予,如圖5所示

5、SDK相關(guān)說(shuō)明在《Windows端VoIP SDK使用說(shuō)明》一文,已經(jīng)做了詳細(xì)介紹,本文接下來(lái)主要介紹WinDemo的代碼結(jié)構(gòu),方便開(kāi)發(fā)者理清開(kāi)發(fā)流程。

二、WinDemo介紹

總的來(lái)說(shuō),Windows端的音視頻通信系統(tǒng)主要包括音視頻采集、音視頻播放和VoIP負(fù)責(zé)的音視頻傳輸三個(gè)模塊。利用圖鴨科技提供的SDK及由圖鴨科技公司開(kāi)源的轉(zhuǎn)發(fā)服務(wù)器代碼(www.tucodec.com),開(kāi)發(fā)者可以搭建自己的音視頻通信服務(wù)器。因此,開(kāi)發(fā)者主要面對(duì)的問(wèn)題就是Windows端的音視頻采集與播放問(wèn)題,也是本文著重介紹的地方。

1、視頻采集和播放
有經(jīng)驗(yàn)的開(kāi)發(fā)者看到壓縮包內(nèi)的opencv目錄便知道了在本Demo中對(duì)視頻的處理借助了opencv的幫助,其優(yōu)點(diǎn)是可以非常方便的進(jìn)行視頻采集和播放,為開(kāi)發(fā)者屏蔽了與Windows硬件交互的諸多繁雜任務(wù)。Demo中的CVideoCap和CVideoRender兩個(gè)類(lèi)就是利用了opencv庫(kù)進(jìn)行視頻的采集和渲染。

當(dāng)然,opencv有一個(gè)比較大的缺點(diǎn)兒就是耗費(fèi)系統(tǒng)資源比較多,如果電腦配置一般的話會(huì)發(fā)現(xiàn)開(kāi)啟opencv渲染視頻后電腦的CPU負(fù)荷會(huì)出現(xiàn)大幅上漲。所以如果想把我們的SDK用于產(chǎn)品研發(fā)的話,推薦自己實(shí)現(xiàn)客戶端的采集和播放功能,常用的有DirectShow,SDL,DirectX SDK等官方提供的SDK。

2、音頻采集和播放
由于opencv不能完成音頻相關(guān)的處理任務(wù),所以Demo中使用了微軟提供的Windows MultiMedia相關(guān)API完成音頻采集和渲染功能,詳見(jiàn)Demo中的CAudioCap和CAudioRender兩個(gè)類(lèi)。

音視頻采集與播放的類(lèi)關(guān)系如下圖所示:

3、CVoipManager類(lèi)
這個(gè)類(lèi)封裝了音視頻操作與VoIP之間的交互,是整個(gè)Demo的核心部分。其類(lèi)圖如下所示:

部分方法和屬性介紹:

m_clientNetwork:ClientNetwork實(shí)例,負(fù)責(zé)轉(zhuǎn)發(fā)服務(wù)器的登錄
m_voip:TYVoip實(shí)例,負(fù)責(zé)打通數(shù)據(jù)傳輸
m_voipCallback:TYVoip中的接口實(shí)現(xiàn),是voip的視頻回調(diào)接口,客戶端從這個(gè)類(lèi)中獲得voip傳過(guò)來(lái)的視頻數(shù)據(jù)
m_selfID:本地的usrID
m_sessionID:會(huì)話ID
m_audioCap,m_audioRender,m_videoCap,m_videoRender:音視頻采集渲染
m_ac,m_ai,m_vc,m_vi:音視頻格式配置
m_nodeList:添加的通信節(jié)點(diǎn)列表
LoginServer:登錄轉(zhuǎn)發(fā)服務(wù)器(轉(zhuǎn)發(fā)服務(wù)器需要提前配置好),因?yàn)槭峭ㄟ^(guò)轉(zhuǎn)發(fā)服務(wù)器做數(shù)據(jù)傳輸或P2P打洞,所以在添加對(duì)方為節(jié)點(diǎn)的時(shí)候要保證兩者都是在線狀態(tài),當(dāng)然這個(gè)在登錄模塊做了處理,如果對(duì)方還沒(méi)上線會(huì)一直請(qǐng)求下去。
AddNote:添加一個(gè)通信節(jié)點(diǎn)
RemoveNote:移除一個(gè)通信節(jié)點(diǎn)
StartVoipTransmit:開(kāi)始音視頻采集和渲染以及傳輸
EndVoipTransmit:結(jié)束音視頻采集和渲染以及傳輸

三、效果展示

1、自己登陸ID為1,添加節(jié)點(diǎn)為2,但2未上線的情況

可以看到本地視頻回路已被打開(kāi),控制臺(tái)打印信息主要有:

login success:表示登陸轉(zhuǎn)發(fā)服務(wù)器成功
add node 2:表示添加節(jié)點(diǎn)2
get p2p addr of uid:2 fail:是在請(qǐng)求添加2節(jié)點(diǎn),但是2節(jié)點(diǎn)還沒(méi)有上線

2、本地ID為1,添加節(jié)點(diǎn)2,且節(jié)點(diǎn)2已上線

達(dá)到上圖所示結(jié)果,就完成了Windows端的音視頻通信。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11037.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<