直播系統(tǒng)平臺開發(fā)的了解、入門、熟練、精通并不容易
理解編寫程序開發(fā)的功能文檔是一件容易的事,畢竟市場上有用那么多的優(yōu)秀的程序可以借鑒。但是想要把一些直播程序功能實現(xiàn)的的門檻很高。用代碼實現(xiàn)功能是一個十分困難的任務(wù)。一套優(yōu)秀的程序,需要極強的使用上便利性,還有優(yōu)秀的UI交互邏輯,完善的功能和便于理解操作邏輯;簡潔優(yōu)美的界面設(shè)計......
可以說良好的直播源碼 直播代碼是高效穩(wěn)定的基礎(chǔ),完善架構(gòu)能力和有效易用的基礎(chǔ)是程序開發(fā)的基石。用心開發(fā)的直播程序才能充分滿足用戶需求,每個技術(shù)步驟都做到穩(wěn)定可行可以真正解決直播系統(tǒng)平臺開發(fā)的痛點。
直播系統(tǒng)平臺開發(fā):可以分為 采集、前處理、編碼、傳輸、解碼、渲染, 推流, 拉流、連麥、直播、互動等幾個環(huán)節(jié)如下:
采集 :包含圖像采集和音頻采集
圖像采集設(shè)置前置攝像頭、后置攝像頭,并配置采集的參數(shù)、圖像數(shù)據(jù)的長寬、fps、輸出的方向、橫屏豎屏等,然后從回調(diào)中取到數(shù)據(jù)。音頻采集和編碼主要面臨的挑戰(zhàn)在于:噪聲消除(Denoise)、回聲消除(AEC)算法等。前期不需要音頻數(shù)據(jù)處理需求的時候, 只需配置音頻采集的采樣頻率、采樣精度和聲道。
前處理
現(xiàn)在直播美顏已經(jīng)是標(biāo)配了,80%的主播沒有美顏根本沒法看
美顏算法需要用到GPU編程,需要懂圖像處理算法的人,沒有好的開源實現(xiàn),要自己參考論文去研究。難點不在于美顏效果,而在于GPU占用和美顏效果之間找平衡。GPU雖然性能好,但是也是有功耗的,GPU占用太高會導(dǎo)致手機發(fā)燙,而手機發(fā)燙會導(dǎo)致攝像頭采集掉幀,可能原因是過熱會導(dǎo)致CPU降低主頻。
編碼
要采用硬編碼,軟編碼720p完全沒希望,勉強能編碼也會導(dǎo)致CPU過熱燙到攝像頭。
硬編碼兼容性又是一個大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數(shù)設(shè)計上找到最佳平衡點。
傳輸
封包最主要注意的一個點是時間戳。
因為用的 AVPacket 封包,每個包都會有一DST(Decode Time Stamp)、PST (Presentation Time Stamp) 參數(shù),從字面上可以理解,就是解碼時間和顯示時間,在沒有 B 幀存在的情況下 DTS 的順序和 PTS 的順序應(yīng)該是一樣的。這塊還涉及到重連和丟幀,用戶的網(wǎng)絡(luò)情況波動斷開了,會進行重連。不想要卡頓,必然要加大緩沖,會導(dǎo)致延遲高,延遲高影響互動性,要做權(quán)衡。
解碼和渲染
拉流獲取封裝的視頻數(shù)據(jù)后,必須通過解碼器解碼、渲染后才能在播放器上播放
它是編碼的逆過程,是指從音視頻的數(shù)據(jù)中提取原始數(shù)據(jù)。前面介紹的H.264和H.265編碼格式都是有損壓縮,所以在提取后的原始數(shù)據(jù),并非原始采樣數(shù)據(jù),存在一定的信息丟失。
推流
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進行封裝,變成流數(shù)據(jù)。
常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r通常在1–3秒,對于手機直播這種實時性要求非常高的場景,RTMP也成為手機直播中最常用的流傳輸協(xié)議。
拉流
拉流實際是推流的逆過程
首先通過播放端獲取碼流,標(biāo)準(zhǔn)的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的專利協(xié)議,開源軟件和開源庫都支持的比較好,如開源的librtmp庫,播放端只要支持flashPlayer的就能非常簡單的播放RTMP直播,直播延遲一般在1–3秒。HLS是蘋果提出的基于HTTP的流媒體傳輸協(xié)議,HTML5可以直接打開播放,通過微信、QQ等軟件分享出去,用戶也可以直接觀看直播,可以說手機直播app,HLS拉流協(xié)議是必須支持的。
視頻直播連麥
直播過程中,直播者與觀眾通過麥克風(fēng)、攝像頭等工具溝通交流
幫助雙方進行更有高效地溝通,也可以為更多行業(yè)場景帶來極大的體驗提升。而連麥技術(shù)的創(chuàng)新更是使得直播中多人連麥互動成為可能。
以上是媒體模塊,還有信令控制,登錄、鑒權(quán)、權(quán)限管理、狀態(tài)管理等等,各種應(yīng)用服務(wù),消息推送,聊天,禮物系統(tǒng),支付系統(tǒng),運營支持系統(tǒng)。后臺還有數(shù)據(jù)庫,緩存,分布式文件存儲,消息隊列,運維系統(tǒng)等。
一個直播系統(tǒng)平臺開發(fā)在技術(shù)方面的要求很高,尤其是CDN一塊專業(yè)性很強,要么就用標(biāo)準(zhǔn)化的直播源碼技術(shù)解決方案——畢竟直播平臺技術(shù)過決定著及格線,真正的核心競爭力在于產(chǎn)品本身怎么樣。
文(山東布谷科技馬莊)