OBS主程运行流程
2024-10-07
10
0
本想着从简单的开始,但是发现核心的渲染如D3D11和新的版本基本差不多,还不如直接用新的代码调试,所以本章节放弃。
主程的运行流程如下:
其中
- OBSApp为应用主程序,继承于
class OBSApp : public QApplication
- OBSBasic为主应用程序窗口,继承于
class OBSBasic : public OBSMainWindow
他们的关系可由一个简单的QT应用UI程序来表示,详见:https://www.pnpon.com/article/detail-667.html
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;//主窗口
//创建标签
QLabel* plabel = new QLabel("站长漫谈-pnpon.com",&w);
plabel->move(100,100);//设置其在主窗口中的位置
plabel->resize(200,30);//设置其大小
w.resize(400,400);//设置主窗口大小
w.show();
return a.exec();
}
OBSBasic::OBSInit()函数中做了基础的初始化:
- obs_startup() 初始化obs_core结构体
- InitBasicConfig() 从ini中加载OBS studio配置信息
- ResetVideo() 加载d3d11并初始化render_main obs_video_thread
- ResetAudio()音频
- InitOBSCallbacks() 用户添加外部视频的操作函数;如添加,删除等
- 加载模块
- test-input
- obs-ffmpeg
- obs-x264
- obs-outputs
- rtmp-services
- win-wasapi
- win-capture
- InitOutputs()初始化推流输出
- InitEncoders()编码器,输出流用的,编码为AAC和H264.flv
- InitService() rtmp?不太懂
- ResetAudioDevices obs-ui中配置的音频设备初始化