歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
本文作者,ericxwli,高階工程師,來自騰訊雲終端團隊
背景
最近被老大分配了一個任務,他開啟微信視訊聊天,發起多人視訊,指著功能介面說,“你看我們的產品也是有多人會議的場景,我們也加一個這樣的功能,也不用很複雜,就仿照微信或者QQ的多人視訊做一個出來,能實時視訊通話,這個應該也不難吧,給你一個禮拜搞定,可以嗎?” 我的內心在想這TM要涉及視訊採集、編碼、傳輸、解碼、視訊渲染,要有穩定的後臺音視訊傳輸,就光搭建後臺就要老命了,這尼瑪怎麼搞,臨走老大又補了一句,"哦,我們這裡再加一個亮點,可以在視訊介面傳送文字訊息,擴充下聊天功能",這時我的內心已經崩潰。
要一個禮拜搞定,只能看看有沒有現成的解決方案,抱著試一試的態度google了下,沒想到還真有,騰訊雲、即構、網易雲、聲網等好幾家公司提供了完整了解決方案,本著騰訊畢竟大廠,而且裡面介紹他們的解決方案是基於QQ十多年的技術積累,穩定性和質量都有保障,於是直接試用了騰訊雲的解決方案,從接入過程和最後的效果看確實也沒有辜負我的期望,在還沒有真正購買他們產品時,接入過程中遇到的問題都能得到積極的技術支援,而且讓我意想不到的是該方案還支援im功能,解決了老大最後的神補刀功能。
本文根據自己接入過程,展開介紹下具體步驟,歸納起來主要有四步:
一、註冊賬號
註冊自己的騰訊雲賬號,這個簡單沒什麼說的,騰訊雲也提供了QQ或者微信賬號直接登入,省去註冊的麻煩。
二、申請APPID
在接入騰訊雲實時音視訊前,我們需要給自己的應用註冊一個唯一標識appid,方法如下:
登入騰訊雲,點選進入控制檯,
選擇雲產品->實時音視訊->建立新應用
填入資訊,點選確定即可生成自己的AppID,會在後面接入sdk時使用。
點選建立的應用就可以在控制檯中對自己的應用進行管理
三、購買1元套餐
在使用申請的appid接入實時音視訊服務後,產生通話時長,騰訊雲就會根據時長來計費,就像我們打電話計費一樣,這裡騰訊雲提供了一些套餐,我們可以先使用最便宜的1元套餐,一個月1萬分鍾,一般也滿足使用,如果覺得效果好,使用時長更多時我們可以再升級套餐包,購買入口
四、SDK接入
完成上述準備工作後,就是最關鍵的SDK接入,騰訊雲的SDK接入有專門的文件介紹,接入非常方便,主要有下面關鍵幾個步驟:
1.整合SDK
騰訊實時音視訊解決方案將底層音視訊能力封裝成了一套SDK集合,包含了
SDK | 說明 |
---|---|
IMSDK | 提供 IM 即時通訊功能 |
AVSDK | 提供底層音視訊功能 |
ILiveSDK | 在 AVSDK 基礎上封裝而成,提供更簡單易用的音視訊功能介面 |
BeautySDK | 提供美顏預處理功能 |
我們只需要將上次SDK下載然後匯入到自己工程即可,詳細過程可閱讀官方接入文件
2.生成usersig
每個使用者都會有一個使用者標識,usersig則是對使用者標識的一種鑑權認證,是一個加密串,在登入時會用到,生成步驟如下:
第一步,到騰訊雲的控制檯下載私鑰,也就是這個
**第二步,複製私鑰
下載下來是一個keys.zip,不用解壓縮,直接用winrar開啟,右鍵private_key選【檢視檔案】,然後Ctrl+A,Ctrl+C複製**
**第三步,生成userSig
還是在騰訊雲的控制檯,在左邊找到【開發輔助】,輸入使用者名稱,在私鑰這裡Ctrl+V,點選【生成簽名】,然後就可以在右邊把生成的userSig複製下來**
3.初始化登入
在程式啟動的地方呼叫介面:
// 初始化iLiveSDK
ILiveSDK.getInstance().initSdk(this, Constants.SDKAPPID, Constants.ACCOUNTTYPE);
// 初始化iLiveSDK房間管理模組
ILiveRoomManager.getInstance().init(new ILiveRoomConfig()
.setRoomMsgListener(this));
複製程式碼
sdkAPPID就是剛才申請的APPID,acountType在應用賬號資訊裡
完成初始化後,使用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);
複製程式碼
##效果展示
浪裡個浪,原本以為任務是肯定完成不了,沒想到不到一天的功夫就已經搭建出視訊通話功能。上述就是本文根據騰訊雲官方文件指引,以Android為例總結的從零搭建視訊通話服務的主要步驟,如有遇到其他問題,歡迎留言。
**問答 **
怎麼用小程式實現視訊通話?相關閱讀
此文已由作者授權騰訊雲+社群釋出,更多原文請點選
搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社群!