鵝廠優文|主播pk,如何實現無縫切換?

騰訊雲加社群發表於2018-06-14

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

本文作者,rexchang(常青),騰訊視訊雲終端技術總監,2008 年畢業加入騰訊,一直從事客戶端研發相關工作,先後參與過 PC QQ、手機QQ、QQ物聯等產品專案,目前在騰訊視訊雲團隊負責音視訊終端解決方案的優化和落地工作,幫助客戶在可控的研發成本投入之下,獲得業內一流的音視訊解決方案,目前我們的產品線包括:互動直播、點播、短視訊、實時視訊通話,影象處理,AI等等。

最近騰訊雲移動直播團隊一直在“不務正業”的打造小程式音視訊解決方案,我們一直以來的主營業務之一——秀場直播,在過去幾個月的時間裡則有點“不思進取”。不過隨著近期人力的補充,以及微信版本的逐步穩定,我們在直播方案裡的步伐也會進一步加快,盼大家能夠繼續保持對我們的認可。

今天要介紹的就是主播連麥PK方案,通過這篇文章,我們將一起來了解什麼是主播連麥PK?以及怎麼快速實現主播間的連麥PK?

什麼是連麥PK?

鵝廠優文|主播pk,如何實現無縫切換?

連麥PK就是正在直播中的兩個主播,通過相互協商或者後臺匹配的方式進入PK狀態。一旦進入PK狀態,原本獨自直播的兩個主播,就可以相互視訊通話。與此同時,觀眾端能看到的畫面也一分為二,從原來的一個主播變成左右兩個主播。這種直播模式可以增加直播間的活躍氣氛,為平臺帶來更多的互動性。

  • 進入 PK 前:兩個主播各自獨立推流,每個主播都有自己的觀眾,每個觀眾看到的畫面中都只有自己當前直播間的一個主播。
  • 進入 PK 後:兩個主播之間可以視訊通話,原本觀眾只能看到一個主播,現在可以看到兩個主播在相互PK(視訊通話)。
    鵝廠優文|主播pk,如何實現無縫切換?

如何實現連麥PK

我們先從最初的需求入手,看看最簡單的實現方案是什麼。從前面一張圖我們就可以看出,要想實現連麥PK,最簡答的辦法就是兩個主播各自把兩路畫面混在一起,如下圖所示:
鵝廠優文|主播pk,如何實現無縫切換?

主播 A 把自己手機攝像頭的畫面 local(A) 和來自網路上的主播 B 的畫面 remote(B) 混合在一起,再次進行編碼和壓縮並推送到雲端。這樣一來,原本主播 A 的觀眾就可以看到畫面中多出了主播 B 的畫面。與此同時,如果主播 B 也進行類似的操作,就可以把自己攝像頭的畫面 local(B) 和 來自於網路的主播 A 的畫面 remote(A) 混合在一起。這樣,主播 B 的觀眾也就能同時看到 A 和 B 的畫面了。

但是這種方法有個小問題 —— 主播的手機要做的事情太多

  • 工作一:主播的手機要編碼和壓縮一路本地攝像頭的畫面,這一路畫面是傳給另一個主播的;
  • 工作二:主播的手機要解碼和渲染一路來自網路的對端畫面,這一路畫面是來自另一個主播的;
  • 工作三:上述的兩路畫面要疊加在一起,進行畫面的拼接。
  • 工作四:拼接好的畫面還要再編碼一次,推給觀眾,這樣觀眾才能看到兩路畫面。

如何解決效能問題?

為了解決效能問題,我們需要做的是給主播減負。

那要怎麼減負呢?是不是可以把工作一和工作二,這兩項工作去掉?

不行不行,這兩項工作是用來做視訊通話的,如果減掉了,那主播的 PK 就無從談起。

工作三和工作四是不是可以減掉?

其實也是減不掉的,不過我們可以把它搬到雲端,在伺服器上完成畫面的拼接和計算,而不是在終端完成這些工作。
鵝廠優文|主播pk,如何實現無縫切換?

如上圖:當主播 A 和主播 B 開始 PK 後,兩邊的觀眾就不再繼續從原來的線路上拉流觀看了,而是從新的實時音視訊雲端拉流觀看(上圖中橙色箭頭所示的部分)。這樣一來,我們就可以把畫面的混合和再次編碼的任務放在雲端進行。

但是這種方案也不是最完美的,因為從普通直播進入到 PK 狀態的過程中,觀眾端的畫面會由於線路切換的原因,出現一段時間的卡頓。

騰訊雲連麥PK方案

騰訊雲的連麥PK方案則很好的解決了線路切換問題:

由於騰訊雲本身既有支撐鬥魚、虎牙的常規直播解決方案,又有多年的QQ視訊通話技術積累,所以騰訊的視訊雲本身就是一個混合雲,本身既可以實現常規的直播CDN分發,又能支援高質量低延時的實時音視訊線路。因此,我們的方案非常清晰簡單:直接在原來的直播線路上疊加一路PK畫面:
鵝廠優文|主播pk,如何實現無縫切換?

這樣一來,原本在觀看主播 A 和 主播 B 的觀眾,不會遭遇任何的畫面二次載入和卡頓等待,只是會看到原本一個畫面一分為二,自然而然的進入到 PK 狀態。

方案背後的支撐技術

騰訊雲採用了兩套音視訊通道實現主播連麥PK功能,一套是標準直播採用的 CDN 線路,頻寬成本低廉且沒有併發限制。主播間 PK 所依賴的視訊通話,則採用私有的 UDP 傳輸協議,走專門為降低通訊時延而準備的專線線路。
鵝廠優文|主播pk,如何實現無縫切換?
鵝廠優文|主播pk,如何實現無縫切換?

快速接入直播PK功能

如果您希望使用騰訊雲的直播PK功能,可以參考我們的接入文件 LiveRoom(PK)。需要特別說明的是,這套方案還支援觀眾與主播的連麥,並且終端和後臺程式碼均是開源的,支援自行部署,能夠讓您擁有非常充分的定製空間。
鵝廠優文|主播pk,如何實現無縫切換?

問答
小程式可以實現哪些音視訊解決方案?
相關閱讀
楊春文:小程式在直播產品中的技術應用
如何實現直播中手繪禮物?
除了直播,VR+體育還有哪些開啟方式?

此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1139584?fromSource=waitui
鵝廠優文|主播pk,如何實現無縫切換?



相關文章