obs-vs2022编译
1 相关链接
OBS(Open Broadcaster Software,开放广播软件),免费的开源音视频软件,用于音视频记录和实时流媒体播放。目前的OBS为obs studio版本,它是跨平台重构后的版本,对比原始版本obs classic。
官网:https://obsproject.com/
git地址:https://github.com/obsproject/obs-studio
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:https://download.qt.io/archive/online_installers/4.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 https://github.com/obsproject/obs-studio.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] https://keenjin.github.io/2020/03/obs%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90/
[2] https://obsproject.com/docs/reference-core.html
[3] https://github.com/obsproject/obs-studio/wiki/build-instructions-for-windows
[4] https://blog.csdn.net/yao_hou/article/details/117790512
[5] https://forum.qt.io/topic/135629/qt-6-with-msvc-2022/2
obs-vs2022编译相关推荐
- VS2022编译OBS
VS2022编译obs-studio-28.1.2 前言 准备工作 构建过程 问题记录: 前言 obs-studio-28.1.2出来已经有一段时间了,今天就尝试编译一下,顺便记录一下我编译的过程. ...
- VS2022编译libpng库
本文将使用VS2022编译libpng,操作系统为Windows10.官网地址:链接 1. 下载源代码 由于 libpng 依赖 zlib ,因此需要下载 libpng 和 zlib 的源代码. li ...
- obs windows 编译 obs browser
参考 https://github.com/obsproject/obs-browser 编译 cef,有些版本号可能编译不过或者与 obs browser 不匹配,需要多尝试,本人测试多次才找到 3 ...
- vs2022 编译libmodbus源码
vs编译libmodbus-C++文档类资源-CSDN下载 项目需要用到了第三方库libmodbus,本文安装的是libmodbus3.1.7,结果如下. 方法一.vs2022编译,默认32 ...
- obs studio 编译摄像头源,即视频捕获设备,可以从添加源中找到并使用它
obs studio 编译摄像头源,即视频捕获设备,可以从添加源中找到并使用它 - 下载源码 git clone https://github.com/obsproject/libdshowcaptu ...
- 使用VS2022编译Telegram桌面端(tdesktop)
2018年的时候参考Telegram桌面端(tdesktop)编译方法成功编译过tdesktop,后来比较忙,就没管它了 这段时间正好在研究IM,就把当年的Telegram工程找出来,依然能正常编译, ...
- UE5+VS2022编译Lyra实例项目
1.从Epic的示例下载Lyra Starter Game. 2.下载后先不用UE5打开,打开下载目录,选择Lyra.uproject,右键选择生成VS sln项目. 3.用VS2022打开新生成的s ...
- obs linux编译,obs-studio模块分析与源码编译
一:直播简介 在线教育,娱乐直播等近几年已是遍地开花,其中核心脱离不了低延时音视频技术.我们抛开互动技术不谈,来了解一下视频直播技术. 直播大致流程如下图: 采集: Windows(dshow,dso ...
- obs linux编译,教你如何在 Ubuntu 18.04/16.04 中安装 OBS Studio 21.1
导读 OBS Studio是免费的开源直播和屏幕录制软件,一天前达到21.1个版本. 以下是如何在Ubuntu 18.04,Ubuntu 17.10,Ubuntu 16.04和/或Ubuntu 14. ...
- 【学习日记】win64配置openni的vs2022编译环境
1 在structure官网下载OpenNI的SDK,注意版本对应无误 2 解压后,运行msi文件,安装提示完成安装 3 安装后,环境变量中自动生成了三项内容 4 vs2022中的配置: 我选择了re ...
最新文章
- mysql能安装的版本下载失败_mysql 安装失败 每次都安装失败 每个版本都失败
- 如何做好技术 Team Leader
- JavaWeb(九)——JavaBean、Filter
- Codeforces 264B Good Sequences ★ (分解素因子+DP)
- 如何访问SAP Spartacus里的config数据
- goland 实用键
- 神奇的pdfkit工具——将字符串保存为pdf文件
- java合并表的两行_如何通过SQL将不同数据库表中记录两行合并为一行
- MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
- JS高级程序设计——阅读笔记一
- Matlab编程风格指南--Richard Johnson(命名规则,文件与结构,基本语句,布局,注释与文档)
- 状态方程简约为能控能观型
- Android 10去除电池图标以及设置
- 推广的euclid_欧几里得(Euclid)与拓展的欧几里得算法
- 格拉姆矩阵(Gram Matrix)
- java面试题系列10
- 【转载】深入浅出的讲解傅里叶变换
- artisan命令大全
- day1学习vue2笔记 vue指令
- python图片缩放不失真