從0到1搭建視頻通話系統,我1天就搞定了


歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐干貨哦~

本文由騰訊雲視頻發表於雲+社區專欄

img

本文作者,ericxwli,高級工程師,來自騰訊雲終端團隊

背景

最近被老大分配了一個任務,他打開微信視頻聊天,發起多人視頻,指着功能界面說,“你看我們的產品也是有多人會議的場景,我們也加一個這樣的功能,也不用很復雜,就仿照微信或者QQ的多人視頻做一個出來,能實時視頻通話,這個應該也不難吧,給你一個禮拜搞定,可以嗎?” 我的內心在想這TM要涉及視頻采集、編碼、傳輸、解碼、視頻渲染,要有穩定的后台音視頻傳輸,就光搭建后台就要老命了,這尼瑪怎么搞,臨走老大又補了一句,"哦,我們這里再加一個亮點,可以在視頻界面發送文本消息,拓展下聊天功能",這時我的內心已經崩潰。

要一個禮拜搞定,只能看看有沒有現成的解決方案,抱着試一試的態度google了下,沒想到還真有,騰訊雲、即構、網易雲、聲網等好幾家公司提供了完整了解決方案,本着騰訊畢竟大廠,而且里面介紹他們的解決方案是基於QQ十多年的技術積累,穩定性和質量都有保障,於是直接試用了騰訊雲的解決方案,從接入過程和最后的效果看確實也沒有辜負我的期望,在還沒有真正購買他們產品時,接入過程中遇到的問題都能得到積極的技術支持,而且讓我意想不到的是該方案還支持im功能,解決了老大最后的神補刀功能。

本文根據自己接入過程,展開介紹下具體步驟,歸納起來主要有四步:

一、注冊賬號

進入官網

注冊自己的騰訊雲賬號,這個簡單沒什么說的,騰訊雲也提供了QQ或者微信賬號直接登錄,省去注冊的麻煩。

二、申請APPID

在接入騰訊雲實時音視頻前,我們需要給自己的應用注冊一個唯一標識appid,方法如下:

登錄騰訊雲,點擊進入控制台,

img

選擇雲產品->實時音視頻->創建新應用

img

img

填入信息,點擊確定即可生成自己的AppID,會在后面接入sdk時使用。

img

點擊創建的應用就可以在控制台中對自己的應用進行管理

img

三、購買1元套餐

在使用申請的appid接入實時音視頻服務后,產生通話時長,騰訊雲就會根據時長來計費,就像我們打電話計費一樣,這里騰訊雲提供了一些套餐,我們可以先使用最便宜的1元套餐,一個月1萬分鍾,一般也滿足使用,如果覺得效果好,使用時長更多時我們可以再升級套餐包,購買入口

img

四、SDK接入

完成上述准備工作后,就是最關鍵的SDK接入,騰訊雲的SDK接入有專門的文檔介紹,接入非常方便,主要有下面關鍵幾個步驟:

1.集成SDK

騰訊實時音視頻解決方案將底層音視頻能力封裝成了一套SDK集合,包含了

SDK 說明
IMSDK 提供 IM 即時通信功能
AVSDK 提供底層音視頻功能
ILiveSDK 在 AVSDK 基礎上封裝而成,提供更簡單易用的音視頻功能接口
BeautySDK 提供美顏預處理功能

我們只需要將上次SDK下載然后導入到自己工程即可,詳細過程可閱讀官方接入文檔

2.生成usersig

每個用戶都會有一個用戶標識,usersig則是對用戶標識的一種鑒權認證,是一個加密串,在登錄時會用到,生成步驟如下:

第一步,到騰訊雲的控制台下載私鑰,也就是這個

img

**第二步,復制私鑰

下載下來是一個keys.zip,不用解壓縮,直接用winrar打開,右鍵private_key選【查看文件】,然后Ctrl+A,Ctrl+C復制**

img

**第三步,生成userSig

還是在騰訊雲的控制台,在左邊找到【開發輔助】,輸入用戶名,在私鑰這里Ctrl+V,點擊【生成簽名】,然后就可以在右邊把生成的userSig復制下來**

img

img

3.初始化登錄

在程序啟動的地方調用接口:

// 初始化iLiveSDK
ILiveSDK.getInstance().initSdk(this, Constants.SDKAPPID, Constants.ACCOUNTTYPE);
// 初始化iLiveSDK房間管理模塊
ILiveRoomManager.getInstance().init(new ILiveRoomConfig()
          .setRoomMsgListener(this));

sdkAPPID就是剛才申請的APPID,acountType在應用賬號信息里

img

完成初始化后,使用userid和usersig進行登錄

ILiveLoginManager.getInstance().iLiveLogin(userId, userSig, callback);

4.進入房間,視頻渲染

布局渲染用的控件:

```Java

<com.tencent.ilivesdk.view.AVRootView


    android:id="@+id/av_root_view"

    android:layout_width="match_parent"

    android:layout_height="match_parent" />


並設置到SDK:

ILiveRoomManager.getInstance().initAvRootView(avRootView);

進入房間有兩種方式,房間不存在,調用創建房間接口

ILiveRoomManager.getInstance().createRoom(roomId, new ILiveRoomOption(), callback);

如果房間已經存在,則調用加入房間接口:

ILiveRoomManager.getInstance().createRoom(roomId, new ILiveRoomOption(), callback);

roomID即是房間的號碼,由自己的業務提供維護。

在進入房間后,對於本應用程序就是進入了會議室,會自動將進入會議室的每個人員畫面渲染出來。

5.消息處理

在老大最后補的一句里,需要在視頻通話中加入文本消息聊天功能,老大說的倒很簡單,但是一個消息聊天單單消息通道的建立就是一件非常困難的事情,但在接入過程中驚喜的發現騰訊實時音視頻本身就提供了這個功能,真實得來全不費工夫,而且開啟聊天功能非常簡單,只需在進房時將ILiveRoomOption的imSupport開啟,然后設置消息監聽即可收到消息,消息發送也是s調用一個借口即可,代碼如下:

//消息發送
ILiveMessage message = new ILiveTextMessage(test);
ILiveRoomManager.getInstance().sendGroupMessage(message, callback);

##效果展示

img

浪里個浪,原本以為任務是肯定完成不了,沒想到不到一天的功夫就已經搭建出視頻通話功能。上述就是本文根據騰訊雲官方文檔指引,以Android為例總結的從零搭建視頻通話服務的主要步驟,如有遇到其他問題,歡迎留言。

**問答 **
怎么用小程序實現視頻通話?
相關閱讀
【小視頻】特效錄制插件強勢來襲
怒刷3000條短視頻后,我終於發現網紅300萬點贊的套路
即時通訊App怎樣才能火?背后的技術原理,可以從這5個角度切入
【每日課程推薦】機器學習實戰!快速入門在線廣告業務及CTR相應知識

此文已由作者授權騰訊雲+社區發布,更多原文請點擊

搜索關注公眾號「雲加社區」,第一時間獲取技術干貨,關注后回復1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區


免責聲明!

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



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