LFLiveKit的背景什麼的就不一一介紹了,這裏主要介紹它的功能實現的基礎架構以下表:服務器
|
LFLiveKit網絡 |
LFLiveSessionsession |
是整個sdk核心,提供對外部的主要接口。其主要功能有:管理推流開關,管理音視頻錄製及渲染,管理錄製渲染後的音視頻編嗎,管理編嗎後的數據上傳,管理音視頻的基礎配置,回調推流狀態和異常上報等。架構 |
LFLiveAudioConfigurationide |
音頻配置,配置相關音頻信息(音頻質量,碼率,採樣率,聲道數)優化 |
LFLiveVideoConfiguration編碼 |
視頻配置,配置相關音頻基本信息(視頻質量,碼率,幀數,分辨率)和應用配置如最大最小幀率等。spa |
LFVideoCapture代理 |
視頻管理類,管理視頻的輸入和輸出。同時處理業務需求如:美顏,亮度,水印等效果。用了一個第三方:GPUIImage處理渲染效果調試 |
LFAudioCapture |
音頻管理,管理音頻的輸入開關。這一起沒有多大的定製,應用的原生的API便可。 |
LFH264VideoEncoder,LFHardwareVideoEncoder |
視頻編碼類,分別對應8.0之前和8.0之後的兩種設備的視頻編碼類。都遵照LFVideoEncoding協議,並設置LFStreamSocketDelegate協議給session管理 |
LFHardwareAudioEncoder |
音頻編碼類,遵照LFVideoEncoding協議,並設置LFStreamSocketDelegate協議給session管理 |
LFFrame |
數據信息的基類,做爲上傳到服務器數據的基本模型 |
LFVideoFrame |
視頻信息,做爲上傳到服務器視頻數據的模型 |
LFAudioFrame |
音頻信息,做爲上傳到服務器音頻數據的模型 |
LFLiveStreamInfo |
推流信息:推流地址(目前主要應用rtmp推流);流狀態;音視頻配置信息;異常信息 |
LFStreamRTMPSocket |
數據上傳管理類:開關數據上傳,回調鏈接狀態和異常。遵循LFStreamSocket協議,並設置LFStreamSocketDelegate給session管理 |
LFLiveDebug |
調試信息:這個是開發時候的內部表示,主要用於記錄調試做用。 |
LFStreamingBuffer |
本地採樣:經過本地採樣監控緩衝區,可實現相關切換幀率碼率等策略 |
其主要功能流程以下:
1.其中:LFLiveSession是整個sdk對外主要提供的接口,除了對外提供業務需求接口,並且管理了整個推流過程的不一樣功能的實現,並添加了一系列的回調接口。
2.經過LFLiveAudioConfiguration,LFLiveVideoConfiguration這兩個配置信息做爲一個參數,給各個類傳值基本碼率等基本信息。
3.LFVideoCapture,LFAudioCapture做爲LFLiveSession的一個屬性,能夠管理視頻類的輸入的輸入設備和輸出設備,而且經過GPUIImage來進行一些圖片的濾鏡的操做,而後輸出,經過代理方法回調給LFLiveSession。
4.LFH264VideoEncoder,LFHardwareVideoEncoder,LFHardwareAudioEncoder是管理音視頻編嗎的類。LFLiveSession接受到通過濾鏡處理後的回調後,經過音視頻編碼類對buffer進行編碼,而且在編碼結束之後經過代理方法回調給LFLiveSession。
5.LFStreamRTMPSocket是數據上傳管理類(目前只用rtmp上傳),在LFLiveSession接收到編嗎結束的回調後,就能夠用LFStreamRTMPSocket進行數據上傳。並提供網絡狀態回調和網絡異常回調。
6.LFStreamingBuffer相對就比較靈活了,其功能呢主要是提供了一套根據本地緩衝區在規定時間內的量來回調緩衝區buffer是在增長仍是在減小。若是須要在這方面進行必定的優化能夠在回調中實現切換幀率等方法。在LFLiveKit裏面是沒有具體實現這種策略的後續處理方法,只是回調了增長仍是減小的狀態。
缺點:每個buffer數據上傳後,沒有回調上傳的結果。若是能夠這樣的話,能夠根據上傳的結果來判斷推流端的具體網絡情況。自身邏輯能夠添加切換線路或者下降碼率來實現直播質量的優化。
-----------------------------分割線-------------------------------------
新手上路,共同進步羣號:240970537