如何快速搭建一個完整的移動直播系統?
移動直播行業的火熱會在很長一段時間內持續,通過和各行業的整合,從而成為具有無限可能性的行業。主要因為以下三個原因:
第一,移動直播的UGC生產模式比PC端的直播更明顯,人人都有設備,隨時隨地開播,完全順應了互聯網時代的開放性原則,能刺激更多人去創造和傳播優質內容。
第二,網路帶寬和速度在逐漸提高,網路成本在逐漸下降,為移動直播提供一個極佳的發展環境。文字、聲音、視頻、遊戲等都會在移動直播中呈現,創造出更加豐富的用戶體驗。直播可以以SDK的形式接入到自己的應用中,比如,教育領域中的課後輔導完全可以以直播的形式開展業務、電商也可藉助直播讓用戶挑選商品,促進銷售。
第三,一個與VR/AR技術相結合的移動直播為整個行業的未來提供了新的發展空間。VR/AR直播能夠讓用戶身臨其境,帶動主播與觀眾更貼切真實的互動,大大提高平台的用戶參與度。
當下,有技術實力和流量優勢的互聯網從業者都不願錯過直播這個風口,如何快速搭建一個直播系統成了大家關心的問題,我想和大家分享下我的經驗。我從事於一家直播產品開發商,我們的產品為了快速趕上市場,並沒有自己完全去自己做,而是使用了趣拍雲服務提供的直播SDK。
從業者都知道,一個完整直播產品應該包含以下環節:推流端(採集、前處理、編碼、推流),服務端處理(轉碼、錄製、截圖、鑒黃),播放器(拉流、解碼、渲染)、互動系統(聊天室、禮物系統、贊)。 下面我就一一講述下直播SDK在各個環節所做的工作。
一、移動直播推流端需要做哪些工作?
直播推流端即主播端,主要通過手機攝像頭採集視頻數據和麥克風采集音頻數據,經過一系列前處理、編碼、封裝,然後推流到CDN進行分發。
1、採集
移動直播SDK通過手機攝像頭和麥克風直接採集音視頻數據。其中,視頻採樣數據一般採用RGB或YUV格式、音頻採樣數據一般採用PCM格式。採集到的原始音視頻的體積是非常大的,需要經過壓縮技術處理來提高傳輸效率。
2、前處理
在這個環節主要處理美顏、水印、模糊等效果。美顏功能幾乎是直播的標配功能。我們調研中發現太多case是因為沒有美顏功能被拋棄使用的。另外國家明確提出了,所有直播都必須打有水印並回放留存15天以上。
美顏實際上是通過演算法去識別圖像中的皮膚部分,對皮膚區域進行色值調整。通過顏色對比找到皮膚區域,可以進行色值調整、添加白色圖層或調整透明度等來等來達到美白效果。在美顏處理方面,最著名的GPUImage提供了豐富的效果,同時可以支持iOS和Android,支持自己寫演算法實現自己最理性的效果。GPUImage內置了120多種常見濾鏡效果,添加濾鏡只需要簡單調用幾行代碼就可以了。
3、編碼
為了便於手機視頻的推流、拉流以及存儲,通常採用視頻編碼壓縮技術來減少視頻的體積,現在比較常用的視頻編碼是H.264。在音頻方面,比較常用的是用AAC編碼格式,其它如MP3、WMA也是可選方案。視頻經過編碼壓縮大大提高了視頻的存儲和傳輸效率,當然,經過壓縮後的視頻在播放時必須進行解碼。
相較於之前的H.264,2012年誕生的H.265編解碼標準有了相當大的改善,做到了僅需要原來一半帶寬即可播放相同質量的視頻,低於1.5Mbps的網路也能傳輸1080p的高清視頻。像阿里雲、金山雲都在推自己的H.265編解碼技術,隨著直播的快速發展和對帶寬的依賴,H.265編解碼技術已有全面取代H.264的趨勢。
H264和H265個模塊技術差異:
另外,硬體編碼已經成為移動直播的首選方案,軟編碼處理在720p以上的視頻頹勢非常明顯。在iOS平台上硬體編碼的兼容性比較好,可以直接採用,但在 Android 平台上,MediaCodec 編碼器針對不同的晶元平台表現差異還是非常大的,要完全實現全平台兼容的成本還是非常高的。
4、推流
要想用於推流還必須把音視頻數據使用傳輸協議進行封裝,變成流數據。常用的流傳輸協議有RTSP、RTMP、HLS等,使用RTMP傳輸的延時通常在1–3秒,對於移動直播這種實時性要求非常高的場景,RTMP也成為移動直播中最常用的流傳輸協議。最後通過一定的Qos演算法將音視頻流數據推送到網路斷,通過CDN進行分發。在直播場景中,網路不穩定是非常常見的,這時就需要Qos來保證網路不穩情況下的用戶觀看直播的體驗,通常是通過主播端和播放端設置緩存,讓碼率均勻。另外,針對實時變化的網路狀況,動態碼率和幀率也是最常用的策略。
當然,在網路傳輸方面全部自己來做基本不現實,找提供推流服務的CDN服務商提供解決方案是最好的選擇,可參考文章開頭介紹的雲視頻服務商。據了解,阿里雲是國內唯一能自研CDN緩存伺服器的廠商,性能非常有保障。當然,大多數直播平台都會同時接入多個視頻雲服務提供商,這樣可以做拉流線路互備,對推流後視頻集群再進行優化也可提高直播的流暢性和穩定性。
二、服務端處理需要做哪些工作?
要想適配各終端和平台,服務端還需要對流進行轉碼,如支持RTMP、HLS、FLV等格式拉流,支持一路轉多路適配不同網路和解析度的終端設備。
1、截圖、錄製、水印
像阿里雲等雲服務商都提供了實時轉碼技術,將用戶推流碼率較高(比如720P)實時轉化成較低清晰度(比如360P)的流以適應播放端的需求。如果要自己搭建實時轉碼系統,這個成本是極高的,一台8核設備只能實時轉10路流,如果一個正常的直播平台有1000路流,就需要100台設備,加上後期的運維成本,一般公司就吃不消了。
2、鑒黃
2016年4月14日,文化部查出了鬥魚、虎牙、YY、熊貓TV、六間房、9158等涉嫌提供含宣揚淫穢、暴力、教唆犯罪的網路直播平台,被列入查處名單。政府介入管制有利於直播行業打造健康的生態,進入良性發展。這也意味著為了安全直播產品鑒黃成了必需環節,使用技術手段去鑒黃是移動直播平台必然採用的方案。
市面上提供鑒黃服務的方案主要有兩種,第一種是對視頻進行截圖,然後對圖片進行鑒黃,返回鑒黃結果和分值。典型的企業有阿里(綠網)、圖譜科技,他們目前都支持直接傳入視頻,經過服務端分析返回結果。通常由業務系統接入鑒黃服務,根據鑒黃結果對直播流進行控制,如切斷直播流、封禁賬號等。第二種是和CDN結合,直接對直播流進行分析,識別結果分為色情、疑似色情、性感和正常,業務系統根據識別結果直接控制直播流。典型的企業是Viscovery,這套方案的優點是實時性保證比較好,缺點是必須部署到CDN或自己的機房,使用成本相對高一些。
還有像趣拍雲服務這種一站式直播解決方案提供商,他們的做法是,用戶只需在控制台對鑒黃服務進行配置就可以針對每個應用、每一路直播流進行實時審核。在控制台中,趣拍視頻雲服務實時將鑒黃結果返回,用戶可以直接查看色情直播和違規界面的截圖,同時可以對直播流進行控制,切斷問題直播流。該服務商還提供了簡訊、郵件和站內信功能,避免漏掉任何一個非法視頻,給平台造成損失,我們就使用了這種方式。
三、播放器端需要做哪些工作?
在播放器端如何做到秒開,直播過程中保證畫面和聲音清晰度的同時,穩定、流程、無卡頓的直播流量,這些工作都需要播放器端配合服務端來做優化,做到精確調度。
1、拉流
拉流實際是推流的逆過程。首先通過播放端獲取碼流,標準的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的專利協議,開源軟體和開源庫都支持的比較好,如開源的librtmp庫,播放端只要支持flashPlayer的就能非常簡單的播放RTMP直播,直播延遲一般在1–3秒。HLS是蘋果提出的基於HTTP的流媒體傳輸協議,HTML5可以直接打開播放,通過微信、QQ等軟體分享出去,用戶也可以直接觀看直播,可以說移動直播app,HLS拉流協議是必須支持的,缺點是延遲通常大於10秒。FLV(HTTP-FLV)協議是使用HTTP協議傳輸流媒體內容的一個協議,也不用擔心被Adobe的專利綁架,直播延遲同樣可以做到1–3秒。
各拉流協議的差異:
我們使用的趣拍視頻雲服務的直播拉流技術提供了以上三種格式,滿足不同業務場景的需求,如對即時性要求較高或有互動需求的可以採用RTMP或FLV格式進行直播拉流播放;對於有回放或跨平台需求的,推薦使用HLS。當然,三種協議是可以同時使用的,分別用到自己的場景就可以了。
2、解碼和渲染
拉流獲取封裝的視頻數據後,必須通過解碼器解碼、渲染後才能在播放器上播放。它是編碼的逆過程,是指從音視頻的數據中提取原始數據。前面介紹的H.264和H.265編碼格式都是有損壓縮,所以在提取後的原始數據,並非原始採樣數據,存在一定的信息丟失。因此,在視頻體積最小的情況下通過各種編碼參數保留最好的原始畫面,成為了各視頻公司的核心機密。
考慮對高清的支持,解碼肯定還是要選擇硬解碼的。前面介紹過,iOS系統由於硬體比較單一、比較封閉,支持的比較好,Android系統由於平台差異非常大,編解碼要完全兼容各平台還需要很多工作要做。
四、移動直播中的交互系統
移動直播中最常見的交互有聊天室(彈幕)、點贊、打賞和禮物等,交互系統涉及消息的實時性和互動性,在技術實現上大多是使用IM的功能來實現的。對於在線人數比較多的房間,彈幕消息量是非常大,主播與用戶其實都看不過來,為了緩解伺服器壓力,在產品策略需要做一些必要的優化。
1、聊天室
移動直播中的彈幕交互是用戶和主播互動的主要方式,實際上就是IM中的聊天室功能。聊天室和群聊功能類似,但聊天室的消息是不需要分發給不在線的用戶的,歷史消息也不需要查看,用戶只有進入聊天室後才能查看聊天消息和群成員信息。面對複雜多變的網路狀況,還需要根據用戶位置就近選擇近對應運營商的單線機房接入彈幕消息服務,讓彈幕更及時。
2、禮物系統
禮物系統更是絕大多數移動直播平台的標配了,它是這些平台主要的收入來源。送禮物的形式也增強了用戶和主播之間的互動交流,也是主播依賴平台的最主要原因。
禮物的收發在技術實現上也是用聊天室介面做的,通常採用IM中的自定義消息實現,當用戶收到或發送禮物時將自定義消息對應的禮物圖形渲染出來。
以上就是我們在使用了第三方SDK服務後總結出來的直播產品經驗,希望能幫助到創業者和從業者們。
蔣先生(微信號love-drunk-hard),直播行業老兵。
※兩歲寶寶還不說話?父母做些什麼
※宋高宗為什麼一定要處死岳飛?
TAG:知識百科 |