騰訊雲互動直播SDK整合綜述
SDK構成
互動直播SDK由兩部分構成,IMSDK和AVSDK
其中IMSDK為雲通訊SDK,為AVSDK提供賬號登入、信令通道、IM彈幕訊息、日誌模組、日誌上報等功能
AVSDK提供攝像頭採集、編碼、解碼、美顏等一系列功能(下圖為AVSDK整體框架)
登入互動邏輯
騰訊雲互動直播提供兩種賬號對接方式
-
託管模式
由騰訊提供賬號的註冊、密碼儲存及校驗
-
獨立模式
由第三方業務自己儲存賬號體系,使用互動直播時,騰訊對第三方賬號體系進行一定程度校驗,是目前應用最廣泛的一種驗證方式。
本文著重講解獨立模式使用方法
1.App登入業務伺服器,做使用者身份業務方鑑權
2.業務伺服器驗證成功後,根據使用者身份,使用私鑰加密使用者身份資訊後生成UserSig
3.將UserSig傳給IMSDK的login介面,完成騰訊雲伺服器登入
建立房間互動邏輯
互動直播採用房間的概念進行音視訊流交換,即觀看者與主播必須同一個房間內才能完成通訊。但互動直播不進行房間管理操作,相關的房間號分配、房間成員列表、房間的觀眾主播進出都可由業務來管理(可藉助IMSDK實現該功能,詳情請見房間狀態通知)
建立房間互動流程如下:
1.主播向業務伺服器請求建立房間
2.業務伺服器分配房間號
3.主播使用分配的房間號呼叫AVSDK建立房間介面完成建立
4.通知業務伺服器建立房間完成
觀眾進入房間互動邏輯
在主播完成房間建立後,業務直播平臺已經有當前正在直播的房間列表。觀眾在登陸後可以看到該房間列表點選後進入房間,可發IM訊息或者業務邏輯通知給其他已經在看的觀眾和主播。詳細流程圖如下:
注意:AVSDK不提供觀眾進入直播間通知,且不維護房間成員數及列表,可使用IMSDK實現或業務自行實現(見示意圖虛線部分)
觀眾主播IM訊息互動邏輯
觀眾正在欣賞主播表演同時,可以和主播進行IM互動,進行聊天、送花和送禮物等其它操作
當觀眾需要進行送花、送禮物等計費相關操作時,有兩種方案可供選擇
- 觀眾送花,由互動直播雲回撥業務後臺,進行扣費
- 觀眾送花,由App上行請求至直播平臺,完成扣費操作後,直播平臺通過IMSDK REST API介面傳送該訊息
當直播間內成員較多時,較大訊息量可能會引起主播效能問題,業務側需要優化渲染策略,同時互動直播雲(IMSDK)可控制訊息頻率
觀眾退出房間互動邏輯
觀眾退出房間時,也需要通知給主播和其它的觀眾,相關流程可參考觀眾進入房間互動邏輯
主播退出房間互動邏輯
當主播退出房間時,需做以下幾件事情
- 通知業務直播平臺,直播間銷燬
- 通知其它的觀眾,主播已退出
- 顯示直播結束頁(展示直播時長、直播熱度等)
流程圖如下:
視訊連麥
連麥功能是騰訊雲互動直播SDK在直播場景下推出的特色功能,可供主播和某一(多)觀眾進行視訊連線,相互交流,其它的觀眾可看到主播和被邀請的觀眾的音視訊畫面(映客、聚美優品等App均實現了該功能)
可下載隨心播進行體驗,並可參考隨心播封裝程式碼(Android下載、iOS下載)
上麥的實現流程如下:
注意
- 邀請A上麥需要發點多點的訊息(可使用雲通訊IMSDK的單聊訊息,用CustomElem實現
- 一定要在A完成上麥(開麥克風、攝像頭,上傳本地畫面)完成後,再發送上麥廣播通知
- 上麥廣播通知可使用雲通訊的群訊息(CustomElem)實現
下麥的實現流程如下:
注意
- 主播和觀眾A下麥都需要考慮(程式碼中要做好保護)
- 下麥的廣播通知和下麥者關閉本地視訊上傳可同時進行(但建議先發出下麥通知,再關閉本地畫面)
推流RTMP/HLS(H5或網頁端觀看)
互動直播SDK可直接由後臺將私有協議轉碼為RTMP和HLS,業務可以將RTMP和HLS進行應用間分享,如分享到微信、QQ、朋友圈、QZone和其它應用內
建議使用
推流的TIMAvManager.StreamParam引數可直接設定進行錄製,不需要再呼叫錄製API(推流結束錄製也結束,生命週期一致)
注意
- 互動直播推流使用了直播的cdn,需要業務申請直播許可權(重要)
- 直播有頻道數限制,請業務提前申請足夠的頻道數
- 因各種客戶端異常導致沒有正常銷燬頻道,開發者需從騰訊雲控制檯上手動關閉頻道,否則頻道會一直存在(佔用總頻道數)
錄製主播視訊(回放)
互動直播提供了音視訊錄製API,可由互動直播後臺將主播的音視訊錄製下來,並且儲存到點播伺服器上,待轉碼完成以後,就可以實現回放、分發等其他的功能
注意
- 需要開通點播服務
- 錄製僅限於主播(第一個進入房間並且有音視訊流的人)
- 錄製會以60分鐘為間隔生成MP4檔案
- 轉碼需要時間
- 需要顯式的呼叫停止錄製API
鑑黃
待補充
開發注意事項(必讀)
- 觀眾人數過多時,訊息量也會隨之增多,需注意主播端效能,常見因渲染程式碼過多導致CPU飆升卡頓
- 主播可能因為某種原因(CRASH、斷網等)掉線,業務直播平臺需增加主播心跳,實現直播列表的實時更新
- 互動直播不提供房間成員管理等操作,需業務直播平臺自行實現,或採用IMSDK方案