挨踢部落直播課堂第五期:如何使用即構SDK即時構建實時語音視頻APP
原創(chuàng)網絡視頻直播存在已有很長一段時間,隨著移動上下行帶寬提升及資費的下調,視頻直播被賦予了更多娛樂和社交的屬性,人們享受隨時隨地進行直播和觀看,直播已經廣泛應用于語音社交、視頻社交、互動直播和娃娃機直播等領域。
對于現(xiàn)在的直播領域來說,娃娃機成了新的時代驕子,如何實現(xiàn)同時推兩路流,低延遲等都是大家想要了解的重點了,那么,如何使用即構SDK即時構建娃娃機視頻APP呢?我們特此邀請到即構科技資深前端技術支持主管盧愛輝老師做直播分享。
內容簡介:
1.介紹即構語音視頻的整個架構
1) 應用場景介紹
2) 架構實現(xiàn)
3) 架構圖說明
2.如何接入即構語音視頻SDK(娃娃機場景接入)
1)娃娃機控制端接口調用
2)娃娃機APP端接口調用
大家好,這次分享的主題是最近很熱門的直播主題,如何使用即構SDK即時構建實時語音視頻APP。
這邊先簡短介紹一下我們公司的背景,如下截圖。
大家知道,直播領域很廣,可應用的場景也很廣泛,比如語音社交、視頻社交、互動直播和最近很火的娃娃機場景。我這里主要給大家分享一下如何用zegoSDK來做一個娃娃機的直播。
一、介紹即構語音視頻的整個架構
1) 場景介紹
咱們先看一下玩娃娃的線下部署:
兩個攝像頭,對著一臺娃娃機,娃娃機推兩路,這樣的方式,就可以使操作者兩個角度看看娃娃機的視角。
用戶端APP做出來的效果示例:
支持:2個視角,100毫秒超低延遲,視頻和天車實時同步,這樣使玩家在操作的過程中體驗流暢,兩個視角就不至于看到的畫面太過于平面。
2) 架構實現(xiàn)
接下來和大家說一下,這個直播場景的架構實現(xiàn)。有兩端來說明:
一端是娃娃機端,娃娃機上是有一塊芯片,這塊芯片是Android系統(tǒng)的,大家可以理解為一個小的Android手機。
從以上娃娃機場景可見,娃娃機邊上有兩個攝像頭,說明娃娃機端需要推兩路視頻流出來。
另一端就是用戶APP端,用戶端可以是移動端,也可以是PC端。
用戶APP端:用戶端需要同時拉兩路流去觀看,一開始的時候,先隱藏掉一個view,大家看到一個畫面,當點擊切換攝像頭的時候,就切換到另一個view去看另外的視角。
3) 架構圖說明
這個架構圖的意思就是:娃娃機端推兩路流,先推到zegoserver,然后再經過分發(fā)網絡,給普通的玩家去觀看,這個時候的延遲大概是1-2秒。
用戶端上,當有玩家要上機去抓娃娃的時候,就上機,zegoSDK內部會切換到zegoServer去拉流,實現(xiàn)低延遲,此時可以達到100-300ms。
以下是整個架構圖流的走向。
二、如何接入即構語音視頻SDK(娃娃機場景接入)
接下來我們講解如何用zegoSDK來做出來一個APP,那就涉及到sdk接口層面的調用了。
1) 娃娃機控制端接口調用
首先初始化SDK,登錄房間:
同時推兩路流:
大家看到,推第一路流的時候,有調用enableMic設置為FALSE,這里是因為娃娃機端不需要將音頻推出去,因此將麥克風關閉。
第二路流默認就是不推送音頻的,因此不需要再繼續(xù)調用這個接口了
2)娃娃機APP端接口調用
推完兩路流之后,用戶端就可以進來觀看了,用戶端也是一樣,是需要先初始化SDK和登錄房間的。
進入這個房間后,就可以開始觀看
進入房間后,某些用戶就想要上機進行抓娃娃,接口調用:
上機后,那就要開始控制娃娃機的天車,要進行左右前后的移動,然后開始抓,這個信令就是通過我們的接口sendCustomCommand去實現(xiàn)的。
玩家上機抓完娃娃之后,無論咱們有沒有成功抓到,就要下機了,下機的接口調用就如下了:
下機之后,如若想繼續(xù)上機,可以重復上面的上機接口流程,如果下機之后,玩家不想繼續(xù)觀看了,就可以結束觀看,退出房間。
3) 娃娃機控制端接口調用
用戶端發(fā)送了一些自定義的消息給娃娃機端,娃娃機端接收到之后,就要轉換為芯片上娃娃機能夠識別的串口指令了,娃娃機這端收到的這些指令的接口就是onReceiveCustomCommand。
說完APP端的接口調用,娃娃機這端咱們還差了一個結束推流,SDK接口調用如下,因為娃娃機推了兩路,因此結束的時候也是要結束兩路的,最后退出房間。
咱們總結一下調用的主要流程:
娃娃機端:
1. 初始化SDK
2. 登錄房間
3. 開始直播,推第一路流
4. 開始直播,推第二路流
5. 接收來自APP端的指令
6. 結束直播,退出房間
用戶端:
1. 初始化SDK
2. 登錄房間
3. 拉流觀看
4. 上機操作,升級為玩家
5. 下機,降級為觀眾
6. 結束觀看,退出房間
以上就是整個sdk接口的調用,即構的娃娃機方案,咱們可以去免費下載Zego的Demo試用。
iOS版本>>
安卓版本>>
同時,娃娃機的具體方案介紹和流程圖說明,大家也可以上我們官網參考:
https://www.zego.im/html/solution/wawaji.html
https://www.zego.im/html/document/#Application_Scenes/WaWaJiClient/Overview
以下問題是來自51CTO開發(fā)者社群小伙伴們的提問和分享:
Q:Java-Eason-福建:rtmp推流嗎
A:即構科技盧老師:我們推流是先走zegoserver,因此是先走我們udp的私有協(xié)議推流,最后轉推到分發(fā)網絡的時候,是走的rtmp推流。
Q:Java-Eason-福建:他說的對不對哦
A:即構科技盧老師:具體是什么型號的芯片這個依據廠商來的,芯片上裝的是Android系統(tǒng),Android系統(tǒng)上裝一個控制天車的APP,同時這個APP也是用于推流的。
Q:Java-Eason-福建:娃娃機 與 兩個攝像頭 是連接在一起的吧
A:即構科技盧老師:是的,是通過芯片上的串口連接在一起的。
Q:Java-Eason-福建:應該跟阿里云的視頻直播是一個原理的吧
A:即構科技盧老師:阿里云有視頻直播,但是沒有連麥,他們的延遲也無法實現(xiàn)像ZEGO這樣的低延遲。
Q:數(shù)據-unicorn-北京:SDK是直播+互動的對吧?是否支持視頻會議?主播只能有一個?是否支持多個主播?
A:即構科技盧老師:是支持視頻會議的,視頻會議用的也是同一個SDK,實現(xiàn)低延遲。視頻會議其實就是多個主播在一個房間內互動推流和拉流,走zegoserver推拉流,這樣實現(xiàn)低延遲。因此多個主播也是OK的。
Q:數(shù)據-unicorn-北京:請問收費標準是什么?比如視頻會議。支持同時在線終端有幾個?
A:即構科技盧老師:收費標準的話,咱們可以官網聯(lián)系我們的商務同學具體咨詢。 視頻會議支持12個終端同時在線視頻聊天。
Q:PHP-Coeus-安徽:有H5端的SDK嗎? 我看到有H5的,但是并沒有找到文檔和H5的SDK。
A:即構科技盧老師:文檔是在我發(fā)的這個鏈接里面,我發(fā)給您:
https://www.zego.im/html/document/#Application_Scenes/WaWaJiClient 這個鏈接里面有demo的下載,也有SDK的下載
關于H5的SDK,目前我們已經有了方案,在這個月底就會有成品出來,可以直接在H5上使用。
Q:java-Eason-福建:如果PC端推流要怎么做?必須跑在APP上嗎?場景不同。
A:即構科技盧老師:PC端我們也是有SDK的,PC端提供的是C++的接口,在sdk的基礎上你們開發(fā)一個客戶端出來就可以。PC端的話,就是電腦的USB接多個攝像頭,有異曲同工之處。只是PC端的話,可能成本上稍微會更貴一些,因為一個安卓板子的錢肯定比一臺電腦的錢便宜,是吧。
我上面是以iOS為例說的,iOS上我們提供的是OC的接口,Android上提供Java的接口,PC上提供的是C++的接口。
Q:java-Eason-福建:娃娃機控制推流的開關是 娃娃機啟動的時候就開著呢 還是有客戶連上的時候開始推流?
A:即構科技盧老師:娃娃機啟動的時候就要開始推流的,因為不一定客戶什么時候進來,所以一開始就要開著。
Q:網絡-小王-廣州:如果接入APP,底包會占多大空間?
A:即構科技盧老師:SDK的大小,Android在7M左右,iOS動態(tài)庫在10M左右,iOS的話,打包出來的ipa大概在6M左右。SDK大小的我們仍在進一步優(yōu)化。
Q:數(shù)據-unicorn-北京:視頻會議是否支持私有云部署?
A:即構科技盧老師:支持的。安全性比較高的,我們都可以考慮私有化部署,你們提供對應的機器集群就可以。
【51CTO原創(chuàng)稿件,合作站點轉載請注明原文作者和出處為51CTO.com】