相親交友原始碼實現相親直播間,移動終端的優化方案

雲豹科技程式設計師發表於2021-12-03

相親交友原始碼存在已有很長一段時間,隨著人們對娛樂和社交需求的不斷增加,相親交友原始碼也開發了多種功能,其中相親直播間可以算是最受歡迎的功能之一,由此直播的開啟時間和延遲變成了影響相親交友原始碼發展的重要指標。那麼,問題來了: 如何實現低延遲、秒開的直播?

先來看看相親交友原始碼中視訊直播的5個關鍵的流程:錄製->編碼->網路傳輸->解碼->播放,每個環節對於直播的延遲都會產生不同程度的影響。這裡重點分析移動裝置的情況。受限於技術的成熟度、硬體環境等,我們針對移動場景簡單總結出直播延遲優化的4個點:網路、協議、編解碼、移動終端。今天重點介紹相親交友原始碼移動終端的情況。

解析優化

參見之前介紹的DNS過程,如下圖:
在這裡插入圖片描述
基於可控和容災的需要,相親交友原始碼移動端程式碼一般不會hardcode 推流、播放的伺服器IP地址,而選用域名代替。在IP出現當機或網路中斷的情況下,還可以通過變更DNS來實現問題IP的剔除。而域名的解析時間需要幾十毫秒至幾秒不等,對於新生成熱度不高的域名,一般的平均解析延遲在300ms,按上圖的各個環節只要有一個通路網路產生波動或者是裝置高負載,會增加至秒級。幾十毫秒的情況是ISP NS這一層在熱度足夠高的情況下會對域名的解析進行快取。如下圖:
在這裡插入圖片描述
按我們上面分析的情況,本省延遲大概是15ms左右,那麼域名解析最低也可以做到15ms左右。但由於相親交友原始碼直播場景的特殊性,推流和播放使用的域名使用的熱度較難達到ISP NS快取的標準,所以經常需要走回Root NS進行查詢的路徑。
那相親交友原始碼客戶端解析優化的原理就出來了:本機快取域名的解析結果,對域名進行預解析,每次需要直播推流和播放的時候不再需要再進行DNS過程。此處節省幾十到幾百毫秒的開啟延遲。

播放優化

相親交友原始碼中直播播放器的相關技術點有:直播延時、首屏時間(指從開始播放到第一次看到畫面的時間)、音視訊同步、軟解碼、硬解碼。參考如下播放流程:
在這裡插入圖片描述
播放步驟描述:

1、根據協議型別(如RTMP、RTP、RTSP、HTTP等),與相親交友原始碼伺服器建立連線並接收資料
2、解析二進位制資料,從中找到相關流資訊;
3、根據不同的封裝格式(如FLV、TS)解複用(demux);
4、分別得到已編碼的H.264視訊資料和AAC音訊資料;
5、使用硬解碼(對應系統的API)或軟解碼(FFMpeg)來解壓音視訊資料;
5、經過解碼後得到原始的視訊資料(YUV)和音訊資料(AAC);
7、因為相親交友原始碼中音訊和視訊解碼是分開的,所以我們得把它們同步起來,否則會出現音視訊不同步的現象,比如別人說話會跟口型對不上;
8、最後把同步的音訊資料送到耳機或外放,視訊資料送到螢幕上顯示。

瞭解了播放器的播放流程後,我們可以優化以下幾點:

首屏時間優化

1、從步驟2入手,通過預設解碼器型別,省去探測檔案型別時間;
2、從步驟5入手,縮小視訊資料探測範圍,同時也意味著減少了需要下載的資料量,特別是在網路不好的時候,減少下載的資料量能為相親交友原始碼啟動播放節省大量的時間,當檢測到I幀資料後就立馬返回並進入解碼環節。

延時優化

視訊緩衝區或叫視訊快取策略,該策略原理是當網路卡頓時增加使用者等待時間來快取一定量的視訊資料,達到後續平滑觀看的效果,該技術能有效減少相親交友原始碼中直播內容的卡頓次數,但是會帶來直播上的內容延時,所以該技術主要運用於點播,直播方面已去掉該策略,以此儘可能去掉或縮小內容從網路到螢幕展示過程中的時間;(有利於減少延時)。
下載資料探測池技術,當使用者下載速度不足發生了卡頓,然後網路突然又順暢了,伺服器上之前滯留的資料會加速發下來,這時為了減少之前卡頓造成的延時,播放器會加速播放探測池的視訊資料並丟棄當前加速部分的音訊資料,以此來保證當前觀看內容延時穩定。

推流優化

在這裡插入圖片描述

推流步驟說明:很容易看出推流跟播放其實是逆向的,具體流程就不多說了。

優化一:適當的Qos(Quality of Service,服務質量)策略。

相親交友原始碼推流端會根據當前上行網路情況控制音視訊資料發包和編碼,在網路較差的情況下,音視訊資料傳送不出去,造成資料滯留在本地,這時,會停掉編碼器防止傳送資料進一步滯留,同時會根據網路情況選擇合適的策略控制音視訊傳送。
比如網路很差的情況下,推流端會優先傳送音訊資料,保證使用者能聽到聲音,並在一定間隔內發關鍵幀資料,保證使用者在一定時間間隔之後能看到一些畫面的變化。

優化二:合理的關鍵幀配置。

合理控制關鍵幀傳送間隔(建議2秒或1秒一個),這樣可以減少相親交友原始碼後端處理過程,為後端的緩衝區設定更小創造條件。

軟硬編解選擇

網上有不少關於選擇軟解還是硬解的分析文章,這裡也介紹一些經驗,但根本問題是,沒有一個通用方案能最優適配所有作業系統和機型。
推流編碼: 推薦Andorid4.3(API18)或以上使用硬編,以下版本使用軟編;iOS使用全硬編方案;
播放解碼:Andorid、iOS播放器都使用軟解碼方案,經過我們和大量客戶的測試以及總結,雖然犧牲了功耗,但是在部分細節方面表現會較優,且可控性強,相容性也強,出錯情況少,推薦使用。
附軟硬編解碼優缺點對比:
在這裡插入圖片描述

雲端機型及網路適配

上面分析了很多針對相親交友原始碼視訊編解碼的引數,但實際情況最好的編解碼效果是需要根據機型的適配的,由於iOS的裝置型別較少,可以做到每個機型針對性的測試和調優,但是對於Android就非常難做到逐款機型針對性調優,並且每年都會出產不少的新機器,如果程式碼中寫死了配置或判斷邏輯將非常不利於維護和迭代。
所以我們就誕生了一個想法,這些判斷邏輯或配置是否可以放在雲上呢? 這樣就產生了雲端機型與網路適配的技術。
相親交友原始碼終端在推流、播放前會獲取通過協議上報當前的機型配置、網路情況、IP資訊。雲端會返回一個已最適合的編解碼策略配置:走軟編還是硬編、各項引數的配置,就近推流服務的IP,就近播放服務的IP。 終端獲取一次即可,不需要每次推流、播放前都去獲取一次。
這樣,在我們不斷的迭代和完善機型編解碼適配庫的同時,所有使用該技術的相親交友原始碼都將收益。

總結

相親交友原始碼提供穩定、低延遲、流暢的直播服務,是日常中非常大量細緻的監控、演算法和動態運營的結果,並不是實現了某些的技術點,就能坐享一套穩定的直播服務。

本文轉載自網路,轉載僅為分享乾貨知識,如有侵權歡迎聯絡雲豹科技進行刪除處理
原文連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2845687/,如需轉載,請註明出處,否則將追究法律責任。

相關文章