手遊中實時音視頻的開發經驗與實現技巧

在由 Cocos 攜手聲網舉辦的 Cocos 開發者者巡迴活動中,聲網解決方案架構師李亞分享了手遊中實時音視頻的開發實踐經驗與技巧。算法

如下爲李亞的演講紀實:瀏覽器

在遊戲社會化趨勢的影響下,實時音視頻逐漸普遍應用於多類遊戲中,並在用戶留存、用戶活躍、防做弊、變現等角度爲遊戲帶來價值。例如:微信

1.社交小遊戲網絡

遊戲行業有個說法,遊戲市場,騰訊、網易佔80%,剩下20%留給其它公司瓜分。在這樣的競爭環境下,小遊戲給了不少遊戲團隊新的機遇。這類遊戲有個特色,遊戲玩法輕鬆,即開即玩,好比你畫我猜、你唱我猜、連連看,他們更加註重社交屬性。在加入語音後,簡單的遊戲更添趣味,社交元素更有利於用戶活躍與留存。並且,小遊戲不只僅能夠放在微信中,還能夠在QQ、UC瀏覽器等環境中運行。架構

2.MMO類遊戲併發

MMO在加入實時語音、文字消息後,玩家在自動尋路、自動打怪的過程當中,也能夠與好友語音聊天。經過實時語音,也可讓主播陪玩大R玩家,刺激變現。

3.棋類牌類遊戲分佈式

在該類型遊戲中,增長實時語音或實時視頻,能夠打造更加真實的場景。該類遊戲始終面對着一個老問題,就是玩家做弊,一我的用兩臺手機加入同一個房間。在開視頻後,就能夠杜絕這種做弊現象。同時,經過視頻,用戶還能夠察言觀色,判斷對家牌的好壞。高併發

4.桌遊類遊戲post

以狼人殺爲表明的桌遊類遊戲都很是注重用戶之間的交流,甚至有些遊戲流程主要靠語言來推動。在實時音視頻加入後,桌遊網遊化成爲了現實。優化

5.FPS遊戲

實時語音已經成爲以吃雞爲表明的FPS遊戲的標配功能。如今這類遊戲有諸如小隊語音、全圖語音等不一樣模式。

6.在線抓娃娃

在線抓娃娃從去年年末開始爆紅。經過實時視頻,讓用戶們足不出戶也能玩線下抓娃娃。

綜上來看,實時音視頻能爲手遊帶來能價值呢?咱們能夠簡單總結一下:

提高遊戲體驗:以狼人殺這類遊戲爲例,若是靠發文字消息交流,這樣的遊戲效率和體驗會變得極其差,利用實時語音則讓遊戲的體驗更加天然。

增長粘性,提高留存:如今不少遊戲增長了掛機、自動化的功能,增長遊戲直播或聊天,能讓玩家邊玩邊聊。

加強變現能力:在遊戲中,針對大R玩家,能夠容許他與主播連麥,提高VIP的體驗。

反做弊:在棋類牌類遊戲中,經過開啓視頻,能夠杜絕一人多臺手機等做弊現象。在吃雞遊戲中,主播會把攝像頭對準本身的手和鍵盤,來證實本身不是在靠外掛。

實時音視頻的技術難點

首先實時音視頻自身的技術難點與其處理流程相關。其處理流程以下圖所示:

圖:音視頻在端到端的傳輸流程

實時音視頻的技術自己有不少難點,而遊戲自身又會給它提出更多的要求。咱們來一步步分析。實時音視頻自己的難點包括:

首先是低延時。從行業標準來說,端到端的延時若是大於400ms,兩人對話沒有辦法正常進行。400ms就是一個紅線。可是並不等於400ms就可使用。在一些激烈對戰的場景中,好比團隊副本,指揮語音延時大,呼喊着讓隊友加血、嘲諷,但對方反應總會慢半拍,結果就是團滅。聲網在實時音視頻方面能夠作到端到端平均76ms的低延時傳輸。

另外一方面,路由設備、網絡信號強弱、用網高峯等因素,總會引發丟包和抖動。各位作遊戲開發確定對這種狀況也很熟悉。在實時音視頻通話中,須要有相應的補償算法來抗丟包、抗抖動,保證通話的流暢度和低延時。聲網能夠作到在50%丟包時,仍能正常通話,且不影響用戶體驗。不過這樣的丟包率一般不會出現,由於在在這樣的網絡狀況下,可能普通遊戲也沒有辦法正常進行。因此,只要網絡情況能支持遊戲正常進行,聲網的音視頻通話就能夠正常進行。

第三,網絡的高併發、高可用。在高峯時間段,同一個頻道內的高併發,多個頻道高併發這種狀況都須要開發者作出預案。聲網經過分佈式架構,智能路由算法,保證99.9%的連通率,99.99%的可用度。

最後,在音頻方面,須要有降噪和回聲消除處理。回聲是指說話者能聽到本身的聲音,噪聲不少時候是設備形成的或者環境音。而在視頻方面,常見問題有綠屏、花屏、黑屏,這些一般是由編碼器和設備適配形成的。對於這兩方面問題,咱們都須要經過編碼算法優化和設備適配來解決。聲網有獨家專利的編碼算法,設備適配達到5000多款機型,並且支持的機型還在不斷增多。

遊戲中的實時音視頻

在解決基本的實時音視頻技術難題後,將其應用於遊戲中,還須要咱們知足一些額外的要求。首先,遊戲體驗是最重要的,任何新增的功能都不能影響遊戲體驗。因此,實時音視頻在遊戲中知足如下要求:

  • 開啓/關閉音視頻功能的瞬間,不會致使遊戲卡頓,遊戲自己的音效音量忽大忽小。

  • 不能由於增長實時音視頻而大幅增長功耗,過多佔用內存、CPU等資源,致使遊戲卡頓、降幀。

  • 帶寬佔用要小,不能致使遊戲延時升高。

  • SDK包體積要小,不然會影響遊戲的分發。聲網AMG SDK能夠作到1.1MB的體積。

  • 要作到盲源分離,社交、MMO類遊戲,玩家一般會開外放功能,環境音、甚至手指擊打屏幕的聲音,都會變成噪音,傳到對端後放大,致使玩家對話的聲音聽不清。

  • 靈活性,音質、畫質與流暢度,在帶寬有限的狀況下是矛盾的,開發者須要有在音質與流暢度之間靈活調整的空間。

結合不一樣的遊戲場景,遊戲中的實時音視頻還須要舉辦一些特殊功能,好比:

  • 聲音美化:如變聲功能,聲網開放了聲音美化的接口,經過改變參數,開發者能夠自定義變聲效果。

  • 聽聲辨位:玩家語音經過咱們接口也能夠實現方位感和距離感,通常會應用於在FPS類遊戲中,咱們也曾詳細分析過其中的原理。咱們曾分享過聲網本身的接口實現

遊戲實時音視頻的典型技術架構

前面咱們分享了不少場景,包括連麥遊戲、語音電臺、視頻麻將、團戰語音等等,但歸納來說,從技術架構上能夠分爲兩種:羣聊和直播。

咱們先來看一下羣聊的架構:假設有3個玩家參與羣聊,每一個玩家的音視頻流都會實時傳輸到咱們的SD-RTN實時通訊網絡,再經過它傳到對端。同時,咱們的信令消息系統,也支持玩家發送文本消息,進行邀請連麥、接受連麥、排麥等控制。

上圖是直播架構。主播端發出音視頻流,先傳到SD-RTN,能夠通過轉碼,變成rtmp流經過CDN傳到普通玩家。也能夠通過SD-RTN直接傳到VIP玩家,VIP玩家能夠和主播連麥互動。與前面同樣的,信令消息系統能夠支持發送文本消息,控制連麥請求等。

歡迎訪問 ,與更多開發者交流實時音視頻開發經驗,參與更多技術活動。

相關文章
相關標籤/搜索