OBS-Studio是一款非常好用的开源直播推流软件,目前已经发布了很多个版本。但是目前都没看到详细或流程清晰的源码分析介绍。所以,本文以线程为单位对OBS的采集、编码、传输流程进行梳理,一方面能够使我自己更清楚OBS架构和运行流程,另一方面也能方便新手同学。整体的粒度不会太细,但已经能够阐述OBS流程。由于水平有限,其中可能存在问题,如果有,请指出。
OBS主要线程共五个:
1.主线程:主要做一些初始化工作和UI处理
2.视频渲染线程:渲染视频到窗口
3.视频编码线程:编码原始视频
4.音频编码线程:编码原始音频
5.流输出线程:将编码后的音视频数据发送出去,俗称推流。
请看流程图(下载清晰):