LFLiveKit框架的介紹

LFLiveKit的背景什么的就不一一介紹了,這里主要介紹它的功能實現(xiàn)的基礎(chǔ)架構(gòu)如下表:

LFLiveSession 是整個sdk核心,提供對外部的主要接口。其主要功能有:管理推流開關(guān),管理音視頻錄制及渲染,管理錄制渲染后的音視頻編嗎,管理編嗎后的數(shù)據(jù)上傳,管理音視頻的基礎(chǔ)配置,回調(diào)推流狀態(tài)和異常上報等。
LFLiveAudioConfiguration 音頻配置,配置相關(guān)音頻信息(音頻質(zhì)量,碼率,采樣率,聲道數(shù))
LFLiveVideoConfiguration 視頻配置,配置相關(guān)音頻基本信息(視頻質(zhì)量,碼率,幀數(shù),分辨率)和應(yīng)用配置如最大最小幀率等。
LFVideoCapture 視頻管理類,管理視頻的輸入和輸出。同時處理業(yè)務(wù)需求如:美顏,亮度,水印等效果。用了一個第三方:GPUIImage處理渲染效果
LFAudioCapture 音頻管理,管理音頻的輸入開關(guān)。這一塊兒沒有多大的定制,應(yīng)用的原生的API即可。LFH264VideoEncoder,LFHardwareVideoEncoder 視頻編碼類,分別對應(yīng)8.0以前和8.0以后的兩種設(shè)備的視頻編碼類。都遵守LFVideoEncoding協(xié)議,并設(shè)置LFStreamSocketDelegate協(xié)議給session管理
LFHardwareAudioEncoder 音頻編碼類,遵守LFVideoEncoding協(xié)議,并設(shè)置LFStreamSocketDelegate協(xié)議給session管理
LFFrame 數(shù)據(jù)信息的基類,作為上傳到服務(wù)器數(shù)據(jù)的基本模型
LFVideoFrame 視頻信息,作為上傳到服務(wù)器視頻數(shù)據(jù)的模型
LFAudioFrame 音頻信息,作為上傳到服務(wù)器音頻數(shù)據(jù)的模型
LFLiveStreamInfo 推流信息:推流地址(目前主要應(yīng)用rtmp推流);流狀態(tài);音視頻配置信息;異常信息
LFStreamRTMPSocket 數(shù)據(jù)上傳管理類:開關(guān)數(shù)據(jù)上傳,回調(diào)連接狀態(tài)和異常。遵循LFStreamSocket協(xié)議,并設(shè)置LFStreamSocketDelegate給session管理
LFLiveDebug 調(diào)試信息:這個是開發(fā)時候的內(nèi)部表示,主要用于記錄調(diào)試作用。
LFStreamingBuffer 本地采樣:通過本地采樣監(jiān)控緩沖區(qū),可實現(xiàn)相關(guān)切換幀率碼率等策略

其主要功能流程如下:

1.其中:LFLiveSession是整個sdk對外主要提供的接口,除了對外提供業(yè)務(wù)需求接口,而且管理了整個推流過程的不同功能的實現(xiàn),并添加了一系列的回調(diào)接口。

2.通過LFLiveAudioConfiguration,LFLiveVideoConfiguration這兩個配置信息作為一個參數(shù),給各個類傳值基本碼率等基本信息。

3.LFVideoCapture,LFAudioCapture作為LFLiveSession的一個屬性,可以管理視頻類的輸入的輸入設(shè)備和輸出設(shè)備,并且通過GPUIImage來進行一些圖片的濾鏡的操作,然后輸出,通過代理方法回調(diào)給LFLiveSession。

4.LFH264VideoEncoder,LFHardwareVideoEncoder,LFHardwareAudioEncoder是管理音視頻編嗎的類。LFLiveSession接受到經(jīng)過濾鏡處理后的回調(diào)后,通過音視頻編碼類對buffer進行編碼,并且在編碼結(jié)束以后通過代理方法回調(diào)給LFLiveSession。

5.LFStreamRTMPSocket是數(shù)據(jù)上傳管理類(目前只用rtmp上傳),在LFLiveSession接收到編嗎結(jié)束的回調(diào)后,就可以用LFStreamRTMPSocket進行數(shù)據(jù)上傳。并提供網(wǎng)絡(luò)狀態(tài)回調(diào)和網(wǎng)絡(luò)異常回調(diào)。

6.LFStreamingBuffer相對就比較靈活了,其功能呢主要是提供了一套根據(jù)本地緩沖區(qū)在規(guī)定時間內(nèi)的量來回調(diào)緩沖區(qū)buffer是在增加還是在減少。如果需要在這方面進行一定的優(yōu)化可以在回調(diào)中實現(xiàn)切換幀率等方法。在LFLiveKit里面是沒有具體實現(xiàn)這種策略的后續(xù)處理方法,只是回調(diào)了增加還是減少的狀態(tài)。

缺點:每一個buffer數(shù)據(jù)上傳后,沒有回調(diào)上傳的結(jié)果。如果可以這樣的話,可以根據(jù)上傳的結(jié)果來判斷推流端的具體網(wǎng)絡(luò)狀況。自身邏輯可以添加切換線路或者降低碼率來實現(xiàn)直播質(zhì)量的優(yōu)化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容