OBS-Studio是一款非常好用的開源直播推流軟件,目前已經發布了很多個版本。但是目前都沒看到詳細或流程清晰的源碼分析介紹。所以,本文以線程為單位對OBS的采集、編碼、傳輸流程進行梳理,一方面能夠使我自己更清楚OBS架構和運行流程,另一方面也能方便新手同學。整體的粒度不會太細,但已經能夠闡述OBS流程。由於水平有限,其中可能存在問題,如果有,請指出。
OBS主要線程共五個:
1.主線程:主要做一些初始化工作和UI處理
2.視頻渲染線程:渲染視頻到窗口
3.視頻編碼線程:編碼原始視頻
4.音頻編碼線程:編碼原始音頻
5.流輸出線程:將編碼后的音視頻數據發送出去,俗稱推流。
請看流程圖(下載清晰):