快手直播平台演进之路
生活随笔
收集整理的這篇文章主要介紹了
快手直播平台演进之路
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快手作為目前世界上領先的直播平臺,在業務形態不斷拓展的過程中,也經歷了直播架構的不斷演變,從完全采用第三方解決方案,到目前自建源站、自研連麥解決方案、自建超高密度轉碼集群,搭建起了一套高穩定性的直播架構系統,全程把控了端到端的體驗,不斷根據用戶體驗在各個技術維度上進行打磨。本文來自郭亮在LiveVideoStackCon2019北京站上的精彩分享。文 / 郭亮整理 /?LiveVideoStack
大家好我是郭亮,目前負責快手的直播架構和算法團隊。很高興今天有機會給大家分享“快手直播平臺架構的演進歷程”。首先,我會簡單說明一下快手直播平臺的現狀;接著,我會詳細介紹快手直播平臺在近一兩年的成果以及架構的演進,以及對用戶體驗、QoS、QoE、成本等的影響;最后,針對5G+AI下的音視頻技術發展趨勢,拋磚引玉,和大家一起探討。
一、 快手直播平臺的現狀快手的DAU超過2億,直播日活超過1億,每天短視頻上傳量超過1500w。作為世界上領先的直播平臺,擁有最大的活躍用戶數、每日直播房間數,以及同時在線觀眾數。面對如此大的用戶規模,如何打造一流的直播平臺,實現一流的直播體驗,是我們團隊一直在深挖的課題。
在快手,并發在線的直播間數量和觀眾數量都是非常高的。這是由于快手一直堅持的普惠原則,在分發策略上對中小主播的側重,再加上用戶間長期積累的信任關系,使得平臺活躍主播數量遠遠超過其它平臺;其次,快手的業務場景是多樣性的。多樣化的業務,包括連麥、PK、聊天室、KTV、游戲直播等,覆蓋了目前音視頻技術的各個主流細分場景。此外,快手覆蓋的用戶群非常廣,用戶遍布城鎮和鄉村,有著多種多樣的復雜網絡環境,這對于直播清晰度和流暢度提出了非常大的挑戰。為了應對多樣化的業務場景和復雜的網絡環境,保證用戶直播的體驗,快手對直播系統做了大規模的投入和優化,在架構、自研協議、算法等幾個方面持續迭代。
目前業內通用的直播架構都是類似這樣的:各家CDN廠商均基于標準的RTMP協議,提供推流、錄制、分發等服務。同時一些第三方RTC服務提供商,也會提供連麥和PK的解決方案。站在集成的角度,快手理論上只要把業務集成到第三方標準服務上,同時完成UI、業務層的開發,就可以搭建一套完整的系統,我們一開始也是采用類似的方式滿足了業務的基本需求。然而,隨著系統規模的擴大,我們對用戶體驗的要求越來越高,這種方案會存在典型的木桶效應,主要痛點有:●故障無法自主調度:采用CDN分發,主播推到某家CDN已經提前設定好。當CDN在局部發生可用性或質量下降時,無法做到通過自主調度,無縫切換到其他CDN,導致該區域用戶均無法觀看這個主播的直播,會非常影響業務的可用性。●轉碼質量無法統一、擴展難、成本高:業界轉碼方案多樣,質量與成本參差不齊。為了保證用戶體驗,一種可能的做法是要求各家針對快手統一架構與質量,這無疑存在工程量大、響應需求周期長的問題。很多CDN廠商提供的轉碼用軟件實現,成本非常高,也無法彈性擴展。經過詳細調研與慎重考慮,在快手的業務與體量下,自建源站+轉碼集群是最優的方案。●推流質量不佳,難以優化:現有RTMP的推流框架,是基于TCP的,在弱網傳輸方面有很多天生的弱點。而主播一旦卡頓,所有觀眾都會卡,因此我們必須首先保證主播推流的穩定性。此外,在網絡層面直播推流與連麥也需要統一的傳輸策略,否則兩者相互競爭,會直接影響直播與連麥的質量,自己跟自己打架。因此采用統一的上行推流協議勢在必行。而跟上面轉碼同理,要依賴于第三方來做統一的上行優化,是基本不可行的。快手擁有比較強的音視頻傳輸算法團隊,希望通過自研算法,提升直播推流的可靠性和穩定性,提升用戶體驗。●可擴展性差:采用第三方方案,面臨著無法快速遷移和擴展的問題。快手處于高速發展期,業務需求迭代頻繁,業務種類增長迅速,高擴展性是滿足業務快速迭代的基礎。
基于以上這些考慮,快手迫切的需要自研更適合快手業務和技術形態的直播源站架構與私有傳輸協議,結合自研算法的落地,為用戶提供高品質的直播體驗。以下通過快手直播技術平臺發展的三個階段,詳細介紹快手直播平臺的演進之路。二、 快手直播平臺的技術演進1. 快手直播平臺1.0快手直播平臺的1.0著重解決兩個短板。一個短板是快手無法使用自研的推流協議,在這方面快手自建了源站,用自己的私有協議KTP進行推流。基于自建的源站,快手擁有了CDN調度的能力,這樣對容災和風險的把控就會非常強,解決了第二個短板。A. 源站的穩定性設計快手對穩定性要求非常高,自建源站必須有高可靠、高并發和易遷移的特性。高可靠主要體現在必須有一定冗余,而且可以自動且無痛降級到CDN,確保線上服務在各種異常情況下的穩定性,如專線故障、流量突增、單家CDN質量下降等;高并發主要體現在支持單源站擴容,一個源站可以快速穩定擴到一倍以上的規模,還支持水平擴展,能夠支持快速的新建一個源站,這樣對房間的支撐能力和分發能力都有高并發的擴展,可以很好的支持各種突發流量;易遷移則體現在快手是第一家基于兼容多家公有云基礎平臺設施的自建源站,可以很好的規避各種風險,包括穩定性和質量風險、商務風險等,可以同時兼容多家公有云平臺的基礎設施。B. 基于KTP的推流C. CDN智能調度自建源站賦予了快手CDN調度的能力,即各家CDN都需要來快手自建源站進行回源拉流。快手源站通過控制各CDN的流量比例,在質量和成本間取得最好的折衷。然而,快手體量龐大,需要同時使用多家CDN,而各家 CDN 的質量、價格參差不齊,以及經常有一些不可預知的突發狀況,因此,通過人工調度的方式,顯然是無法接受的。快手通過自研智能CDN調度系統,精確捕捉 CDN 與用戶的動態變化,從而更合理地利用CDN 資源,且大大降低觀看故障時長,節約大量人力監控和維護成本。
2、 快手直播平臺2.0快手直播架構1.0,一方面,使用自研協議KTP來提升質量;另一方面,通過CDN的智能調度算法,一定程度保證了穩定性。快手的直播平臺2.0則主要解決連麥問題。由于業務不斷在提出各種需求,對體驗要求高,如果使用第三方的方案,在產品迭代速度上會受比較大的影響。在快手直播平臺2.0階段,快手重點投入到了自研的RTC方案中。在RTC場景中,快手希望達到400毫秒以下的端到端延遲,有很好的丟包無感知特性,同時直播/連麥能無縫切換,支持PK和K歌等高級功能。
A. 音頻優化在音頻處理上快手除了有自己的3A算法外,還做了針對高音質的回聲抵消和去噪。另一方面,快手也具備KTV的功能,全民K歌、唱吧類似的混響效果都完全滿足,同時部分效果針對不同K歌人群做了專業級調校的音效。音頻算法方面,快手設計了自適應碼率算法,對主包和冗余包在不同網絡下的配比、切換的時機等做了精細的調整,在jitter控制層面,支持音樂場景和通話場景下兩種jitter模式無縫切換的雙jitter模式。
B. 基于KTP的連麥快手的連麥也是基于KTP協議的。與直播一樣,KTP同時做了網絡控制以及信源信道的聯合優化。然而,與直播相比,連麥對延遲的要求更加苛刻,KTP針對連麥這類RTC場景做了深入的優化,包括對網絡狀態感知的流量控制算法(NATC)和對編碼質量感知的碼率自適應算法(QARC),支持動態碼率、幀率、FEC/ARQ等,同時還支持多人多鏈路聯合優化、ICE、LTRP等技術。與國內一線RTC的競品對比,無論是連麥綜合質量(清晰度、延遲、流暢度),還是網絡響應速度上,基于KTP的方案,均有比較明顯的優勢。
另一個需要考慮的問題是直播與連麥的平衡,這依賴于方案的選擇。一類PK連麥使用的是第三方的解決方案,傾向于服務端混流的方式,另一類采用的是主播端混流的方案,快手采用的后者,也就是主播端混流方案。在服務端混流,一個問題是成本比較高,可擴展性也差。另一個是在快手的業務場景中,直播連麥發生切換時,體驗不佳。在主播端合流,客戶端需推一路延遲可以較大的直播流,同時推一路低延遲的實時連麥流。此時,直播和連麥兩路流天然的形成了競爭,如何平衡二者的關系,也直接影響著直播與連麥的質量。在KTP中,通過實時動態的交換直播流與連麥流的網絡狀態信息與流控狀態信息,從而聯合作出最佳的決策。
至此,快手基本上所有的方案都是自研的,包括快手源站、KTP、直播/連麥方案等,快手直播平臺2.0的使命也完成了。3、 快手直播平臺3.0接下來介紹的快手直播平臺3.0,這個版本的重點則是快手的直播伴侶、轉碼集群和游戲多碼率自適應。給大家分享一下快手上游戲品類的數據,目前快手游戲直播的日活是3500萬(2019年10月快手游戲直播日活增長到4000萬),每月開播的游戲主播超過了200萬。用戶對游戲直播的剛需,使得它日漸成為一個非常重要的場景,需要我們團隊對這個場景做深入的優化。
A. 直播伴侶首先介紹的是快手的直播伴侶。直播伴侶支持多終端(PC、iOS、Android),以及多種模式的投屏,支持超清、高清和標清多檔位的推流。這些和虎牙、斗魚等專業的游戲直播比較類似。此外,快手還有豐富的主播工具,例如語音播報、主題掛件、競猜、榜單等,使得快手直播伴侶有一個非常豐富的產品形態。B. 超高密度直播轉碼集群為了保證清晰度,游戲場景的原始推流碼率一般都比較高,分辨率要求達到1080p@60fps。但如果讓每個觀眾都看藍光或超高清碼流,很多用戶會由于網絡帶寬不足而播放卡頓,或者手機性能不足導致的解碼渲染卡頓。另外,帶寬成本將非常高。同時,隨著算法的演進,在轉碼過程中應用窄帶高清算法可以達到即降低碼率又提升質量的效果。而由于云廠商普遍采用軟件轉碼的解決方案,成本非常高。在快手如此體量的前提下,自建基于硬件轉碼集群就變得非常重要且迫切。
在轉碼方案的選型上,我們做了大量的調研與實驗,并與業界的最佳實踐做了很多細致對比(感謝Twitch沈悅時博士提供的經驗分享)。如下圖所示,可以看出,各種方案均有自己的優缺點。總體來說,軟件方案質量最好,成本非常高;基于ASIC或FPGA的方案,轉碼質量目前無法達到我們的要求;基于GPU的方案,雖然畫質比軟件略差,但有高密度、低成本、產品方案成熟的優點。
經過多方權衡,快手最終選定了用GPU的方案。這時又面臨GPU方案的二選一:Nvidia VS. Intel。在當時,Nvidia的P4和Intel的Xeon E3是兩個可選的方案,經過數輪優化后,對比下來,二者轉碼質量相差并不大。但由于我們的源站建設在云端,云廠商有很多的P4卡儲備用于AI計算。而由于E3在云端主要做媒體處理,AI方面用的并不廣泛,雖然它成本比較低,但云廠商都是沒有儲備的。因此我們的P4方案是采用云廠商提供的設備,但E3的方案則需要在自建IDC部署,這樣就需要我們的IDC到云廠商有一個大容量的專線,專線的穩定性、容量這些都是需要考慮的因素。經過仔細的評估,快手決定采用E3+P4的混合方案,兼顧質量、成本和穩定性。
當然,這些方案并不是拿過來就可以直接用的,結合快手的業務特性,我們和Intel以及NVIDIA一起聯合做了非常多針對性的優化。下圖是我們上線后的一個簡單情況:轉碼的峰值是兩萬路以上;成本上只有軟件成本的四分之一;畫質和X264的Medium相當;穩定性方面,采用了混合的方案,有完善的降級(fallback)機制。例如,在硬件問題上,無論是單卡故障、機房故障、還是專線故障,都可以幾乎無縫的降級,確保線上的用戶體驗不受影響。目前快手也在調研下一代硬件轉碼解決方案,其中IntelE3的下一代產品還在開發中,NVIDIA T4的HEVC的轉碼質量較好,但是密度還不夠高,成本也達不到我們目前的要求。FPGA、ASIC方案的編碼質量需要進一步優化。我們也會在硬件轉碼解決方案領域做持續的關注,包括對結合AI和圖像處理能力,對下一代編碼標準的支持,為下一代快手的直播轉碼系統做出最優的一個選型。
C. 多碼率自適應有了多路轉碼流,我們就可以在端上采用多碼率自適應技術,基于用戶的終端設備、網絡狀態等,動態選擇最佳的碼率檔位,在觀看的流暢度和清晰度之間,取得最佳的tradeoff。
與點播場景不同,直播的多碼率面臨著很多新的挑戰,例如直播流是實時產生的,在帶寬估計方面會面臨數據不足引起網絡空閑導致估不準的問題;為了保證直播的實時性,客戶端的緩存一般也比較小,從而對網絡的抗抖動能力不如點播場景;此外,快手的直播推流是基于KTP的,支持推流的動態碼率、幀率自適應,而這些信息在客戶端是不可見的,當客戶端發生卡頓時,難以判定是因為推流卡頓還是拉流帶寬不足導致。另外,傳統的直播多碼率自適應是基于HTTP切片分發的方案(如DASH/HLS),主要問題是延時大、國內CDN支持不好、可擴展性差。為了應對這些新問題,不同于DASH和HLS,快手提出了基于流協議的多碼率自適應架構,從而大大降低端到端延遲。此外,為了做到網絡感知上的千人千面,我們的傳輸算法團隊還設計了多狀態、多目標的碼率自適應策略,從而為不同的用戶提供不同清晰度、延遲、流暢度的自適應策略。我們將在LVS2019深圳站為大家更詳細的介紹這個協議的研發和上線歷程,歡迎感興趣的同學關注一下。
以上便是到目前為止,快手直播平臺的演進之路。我們的團隊目前在傳輸算法、音頻算法、實時音視頻通信、下一代轉碼平臺等方面持續深入優化。例如在傳輸算法方向,我們的團隊今年與清華大學合作發表了三篇CCF-A類高質量學術論文,包括與清華大學媒體所合作發表了兩篇ACM MM (ACMInternational Conference on Multimedia),利用深度學習,共同探索了基于質量感知的自適應問題和直播調度;以及與清華網絡所合作的期刊TON (IEEE/ACM Transactions on Networking),以控制論與排隊論為理論基礎,研究了多碼率自適應問題,優化觀看流暢與清晰度。另外,對于快手孵化的新業務,如小游戲、A站、海外產品等,我們建立了直播中臺,對新業務輸出成熟先進的直播解決方案。三、 快手直播平臺的未來發展最后簡要聊下5G+AI下直播技術趨勢,拋磚引玉。在5G網絡下,帶寬越來越高,延遲越來越低;在硬件基礎設施上,機器的算力越來越強,基于AI的各種算法也越來越強大,可以支撐更復雜的算法上線。因此,基礎體驗會有一個大幅度提升,在快手上將會看到更清晰,更流暢的直播。這一方面源于編解碼技術的不斷演進,譬如說H264到H265,再到現在正在標準制定階段的H266;另一方面,AI技術和視頻處理以及編解碼的結合,讓視頻主觀質量上提升更多;最后是網絡條件的改善,包括基礎設施的改善以及5G時代的到來,同時更多先進的算法和協議的落地,都將提升直播的體驗。
除了現有傳統的直播方式外,5G+AI會給直播帶來更大的想象空間。例如快手最近線上的一個功能:虛擬形象3D直播。之前這類直播或是一些電影拍攝中,都是使用一些可穿戴設備,模擬一個人的動作,加上配音演員實現類似的效果。現在快手已經通過技術擺脫了對設備的依賴,通過一個普通iPhone的攝像頭或者PC電腦的攝像頭,就可以實現對人臉、表情和肢體的識別,做出更多擬人的動作,對二次元以及不愿意露臉的主播有一個比較大的體驗提升。同時,我們也在自研通過聲音轉換技術擺脫對聲優的依賴,使得快手任何一個人的聲音都可以轉化到目標的聲音上。我們也希望這些技術能早日成熟,提升整個虛擬直播的體驗。5G的時代,泛在的無線網絡可以讓人們隨時隨地看電視。快手也在不斷進行這方面的探索。今年的“十一”閱兵,快手進行了7路特殊視角的70小時直播,總觀看人次超過十億。我們讓更多的用戶透過小屏幕感受國家正在發生的事情,正如我們最新的廣告語“在快手,看見真實的中國”。以上便是我演講的全部內容,希望與大家在5G+AI的技術浪潮中共同探討直播架構的后續演進。
LiveVideoStack?秋季招聘
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒體技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。同時,也歡迎你利用業余時間、遠程參與內容生產。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
總結
以上是生活随笔為你收集整理的快手直播平台演进之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dav1d 0.5.1:更快!
- 下一篇: 基于内容的自适应视频传输算法及其应用