一、搭建直播平臺源碼,移動直播推流端
直播推流端即主播端,主要通過手機攝像頭采集視頻數(shù)據(jù)和麥克風采集音頻數(shù)據(jù),經(jīng)過一系列前處理、編碼、封裝,然后推流到CDN進行分發(fā)。
1、采集
移動直播SDK通過手機攝像頭和麥克風直接采集音視頻數(shù)據(jù)。其中,IOS硬件種類不多,所以比較簡單,安卓則由于市面上硬件機型非常多,所以難以做到一個庫適配所有硬件。
2、前處理
在這個環(huán)節(jié)主要處理美顏、水印、模糊等效果。美顏功能幾乎是直播的標配功能。我們調研中發(fā)現(xiàn)太多case是因為沒有美顏功能被拋棄使用的。另外國家明確提出了,所有直播都必須打有水印并回放留存15天以上。
3、編碼
為了便于手機視頻的推流、拉流以及存儲,通常采用視頻編碼壓縮技術來減少視頻的體積,現(xiàn)在比較常用的視頻編碼是H.264。在音頻方面,比較常用的是AAC編碼格式,其它如MP3、WMA也是可選方案。
4、推流
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r通常在1–3秒,對于移動直播這種實時性要求非常高的場景,RTMP也成為移動直播中*常用的流傳輸協(xié)議。*后通過一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡斷,通過CDN進行分發(fā)。
二、搭建直播平臺源碼,服務端處理
為了讓推上來的流適配各終端各種不同協(xié)議,服務端還需要對流進行轉碼,包括截圖、錄制、水印等。
三、搭建直播平臺源碼,播放器端
1、拉流
拉流實際是推流的逆過程。首先通過播放端獲取碼流,標準的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的專利協(xié)議,開源軟件和開源庫都支持的比較好,如開源的librtmp庫,播放端只要支持flashPlayer的就能非常簡單的播放RTMP直播,直播延遲一般在1–3秒。
1、解碼和渲染
是指從音視頻的數(shù)據(jù)中提取原始數(shù)據(jù),也即音視頻的播放。前面介紹的H.264和H.265編碼格式都是有損壓縮,所以在提取后的原始數(shù)據(jù),并非原始采樣數(shù)據(jù),存在一定的信息丟失。因此,在視頻體積*小的情況下通過各種編碼參數(shù)保留*好的原始畫面,成為了各視頻公司的核心機密。
總之,搭建一套直播系統(tǒng)還是很復雜的,大部分運營級的直播系統(tǒng),是直接找專業(yè)的開發(fā)團隊進行項目開發(fā)、系統(tǒng)測試和*終的上線部署,一整套開發(fā)到上架,*后還需要有專門的技術維護團隊進行運營過程中的技術問題處理。