obs
1 相关链接
OBS(Open Broadcaster Software,开放广播软件),免费的开源音视频软件,用于音视频记录和实时流媒体播放。目前的OBS为obs studio版本,它是跨平台重构后的版本,对比原始版本obs classic。
官网:/
git地址:
2 obs架构
2.1 主要功能模块
整套系统,界面部分采用QT绘制,其余部分,大致可分为几部分:数据输入层、数据处理层、数据输出层。梳理模块及功能后,总结如下:
数据输入层:主要对应上obs中场景和各种源,可由界面操作。
数据处理层:主要是对输出数据的编码、特效处理。
数据输出层:主要是对应推流、本地录制/回放录制、本地渲染预览等。
2.2 插件系统
obs设计上的最大目标,应该是兼容和灵活。为了兼容各种平台、各种硬件、各种软硬件环境,灵活处理各种输出类型(推流、本地录制等)、各种输入源类别、各种编码类型,obs采用了模块化插件式设计,只需要拷贝插件模块到plugins目录,即可动态加载对应的功能。
整个插件模块,主要分为这四大类:
数据源(obs_source_info):图像(image_source_info)、图像幻灯片放映(slideshow_info)、场景(scene_info)、分组(group_info)、媒体源(ffmpeg)、文本(GDI+)(TextSource)、文本(FreeType 2)(freetype2_source_info_v1、freetype2_source_info_v2)、显示器捕获(monitor_capture_info、duplicator_capture_info)、游戏捕获(game_capture_info)、窗口捕获(window_capture_info)、色源(color_source_info_v1、color_source_info_v2)、视频捕获设备(decklink_source_info)、摄像头捕获(dshow_input)、音频输入捕获(wasapi_input_capture)、音频输出捕获(wasapi_output_capture)等(新版还包括网页捕获)。
数据输出(obs_output_info):本地录制(ffmpeg_output)、ffmpeg_muxer、本地回放(replay_buffer)、ffmpeg_encoded_output_info、rtmp推流(rtmp_output_info)、null_output_info、flv_output_info、ftl_output_info、视频采集卡输出(decklink_output_info)
编码器(obs_encoder_info):coreaudio aac编码(aac_info)、nvenc编码(nvenc_info)、opus编码(opus_encoder_info)、ffmpeg aac编码(aac_encoder_info)、ffmpeg vaapi编码(vaapi_encoder_info)、qsv编码(obs_qsv_encoder、obs_qsv_encoder_tex)、x264编码(obs_x264_encoder)、摄像头编码(dshow_c985_h264、dshow_c353_h264)
推流服务(obs_service_info):rtmp_common_service、rtmp_custom_service
插件结构图如下:
2.3 关键路径
2.4 编解码线程
3 windows编译
3.1 安装qt
Qt 自从5.15版本开始,对非商业版本,也就是开源版本,不提供已经制作好的离线exe安装包。
在线installers:.5/
3.2 实操(VS2022)
3.2.1 准备好前置条件
第一:安装VS2022;
第二:下载第三方依赖,单击上面的超链接即可(现在第三方库也不用自己安装了);
在使用CMAKE_PREFIX_PATH 之后,就不用下载第三方的依赖了,因为执行“CI/windows/01_install_dependencies.ps1”的时候会自动将第三方的依赖下载到一个指定的目录,比如:F:\obs-build-dependencies。
第三:安装QT参考前面;
3.2.2 使用官网B方式进行编译
3.2.2.1 下载代码
git clone --recursive .git
如果子模块因为网络原因没有下载全,可以使用如下命令进行处理:
cd obs-studio
git submodule update --init --recursive
git checkout --track origin/release/29.0
3.2.2.2 安装依赖
CI/windows/01_install_dependencies.ps1
上述命令会将第三方的依赖库下载到指定的目录中,此处为F:\obs-build-dependencies\windows-deps-2023-01-06-x64,后面这个目录被用来配置CMAKE_PREFIX_PATH。当然除了windows-deps的依赖,还有一起的依赖,这些个依赖可以使用分号分开,一起配置CMAKE_PREFIX_PATH到中。
3.2.2.3 配置编译工程
目前只需要配置CMAKE_PREFIX_PATH,CMAKE_PREFIX_PATH配置的路径就是使用命令"CI/windows/01_install_dependencies.ps1"下载的依赖库的路径,具体如下:
如果想编译OBS中的例子,需要定义 BOOL型的 BUILD_TESTS,具体如下:
Configure:按照官网上推荐,选择生成VS2022的第三方库,选择Use default native compilers,具体如下:
Configure成功具体如下图:
上图中会打印出一些东西,说明有些选项是没有配置的,如果需要配置,那么就要增加一些entry,然后再次点击configure即可;
生成解决方案:
由上图可以发现:生成工程的过程中会将CMAKE_PREFIX_PATH 所设置的路径中的第三方库复制到了指定的目录中,这个目录后续会被用来安装obs64.exe的时候使用,将这些第三方库安装到F:\obs-studio\build_release-29.0_vs2022*rundir*\Debug\bin\64bi目录中。
3.2.2.4 生成VS2022工程
VS2022工程路径:
编译VS2022工程:
编译成功后,会执行安装操作,这个安装操作会将obs64.exe安装到目录:F:\obs-studio\build_release-29.0_vs2022*rundir*\Debug\bin\64bit中,在这个目录中可以双击运行obs64.exe运行,第三库已经被安装到了这个目录中,所以可以直接运行,双击运行效果如下:
调试运行OBS:
调试运行效果:
4 参考链接
[1] /
[2] .html
[3]
[4]
[5]