歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~小程序
本文做者,rexchang(常青),騰訊視頻雲終端技術總監,2008 年畢業加入騰訊,一直從事客戶端研發相關工做,前後參與過 PC QQ、手機QQ、QQ物聯等產品項目,目前在騰訊視頻雲團隊負責音視頻終端解決方案的優化和落地工做,幫助客戶在可控的研發成本投入之下,得到業內一流的音視頻解決方案,目前咱們的產品線包括:互動直播、點播、短視頻、實時視頻通話,圖像處理,AI等等。
最近騰訊雲移動直播團隊一直在「遊手好閒」的打造小程序音視頻解決方案,咱們一直以來的主營業務之一——秀場直播,在過去幾個月的時間裏則有點「不思進取」。不過隨着近期人力的補充,以及微信版本的逐步穩定,咱們在直播方案裏的步伐也會進一步加快,盼你們可以繼續保持對咱們的承認。服務器
今天要介紹的就是主播連麥PK方案,經過這篇文章,咱們將一塊兒來了解什麼是主播連麥PK?以及怎麼快速實現主播間的連麥PK?微信
連麥PK就是正在直播中的兩個主播,經過相互協商或者後臺匹配的方式進入PK狀態。一旦進入PK狀態,本來獨自直播的兩個主播,就能夠相互視頻通話。與此同時,觀衆端能看到的畫面也一分爲二,從原來的一個主播變成左右兩個主播。這種直播模式能夠增長直播間的活躍氣氛,爲平臺帶來更多的互動性。網絡
咱們先從最初的需求入手,看看最簡單的實現方案是什麼。從前面一張圖咱們就能夠看出,要想實現連麥PK,最簡答的辦法就是兩個主播各自把兩路畫面混在一塊兒,以下圖所示:併發
主播 A 把本身手機攝像頭的畫面 local(A) 和來自網絡上的主播 B 的畫面 remote(B) 混合在一塊兒,再次進行編碼和壓縮並推送到雲端。這樣一來,本來主播 A 的觀衆就能夠看到畫面中多出了主播 B 的畫面。與此同時,若是主播 B 也進行相似的操做,就能夠把本身攝像頭的畫面 local(B) 和 來自於網路的主播 A 的畫面 remote(A) 混合在一塊兒。這樣,主播 B 的觀衆也就能同時看到 A 和 B 的畫面了。性能
可是這種方法有個小問題 —— 主播的手機要作的事情太多:優化
爲了解決性能問題,咱們須要作的是給主播減負。ui
那要怎麼減負呢?是否是能夠把工做一和工做二,這兩項工做去掉?編碼
不行不行,這兩項工做是用來作視頻通話的,若是減掉了,那主播的 PK 就無從談起。spa
工做三和工做四是否是能夠減掉?
其實也是減不掉的,不過咱們能夠把它搬到雲端,在服務器上完成畫面的拼接和計算,而不是在終端完成這些工做。
如上圖:當主播 A 和主播 B 開始 PK 後,兩邊的觀衆就再也不繼續從原來的線路上拉流觀看了,而是重新的實時音視頻雲端拉流觀看(上圖中橙色箭頭所示的部分)。這樣一來,咱們就能夠把畫面的混合和再次編碼的任務放在雲端進行。
可是這種方案也不是最完美的,由於從普通直播進入到 PK 狀態的過程當中,觀衆端的畫面會因爲線路切換的緣由,出現一段時間的卡頓。
騰訊雲的連麥PK方案則很好的解決了線路切換問題:
因爲騰訊雲自己既有支撐鬥魚、虎牙的常規直播解決方案,又有多年的QQ視頻通話技術積累,因此騰訊的視頻雲自己就是一個混合雲,自己既能夠實現常規的直播CDN分發,又能支持高質量低延時的實時音視頻線路。所以,咱們的方案很是清晰簡單:直接在原來的直播線路上疊加一路PK畫面:
這樣一來,本來在觀看主播 A 和 主播 B 的觀衆,不會遭遇任何的畫面二次加載和卡頓等待,只是會看到本來一個畫面一分爲二,天然而然的進入到 PK 狀態。
騰訊雲採用了兩套音視頻通道實現主播連麥PK功能,一套是標準直播採用的 CDN 線路,帶寬成本低廉且沒有併發限制。主播間 PK 所依賴的視頻通話,則採用私有的 UDP 傳輸協議,走專門爲下降通信時延而準備的專線線路。
若是您但願使用騰訊雲的直播PK功能,能夠參考咱們的接入文檔 LiveRoom(PK)。須要特別說明的是,這套方案還支持觀衆與主播的連麥,而且終端和後臺代碼均是開源的,支持自行部署,可以讓您擁有很是充分的定製空間。
問答
小程序能夠實現哪些音視頻解決方案?
相關閱讀
楊春文:小程序在直播產品中的技術應用
如何實現直播中手繪禮物?
除了直播,VR+體育還有哪些打開方式?
此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/dev...
歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~