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编译相关推荐

  1. VS2022编译OBS

    VS2022编译obs-studio-28.1.2 前言 准备工作 构建过程 问题记录: 前言 obs-studio-28.1.2出来已经有一段时间了,今天就尝试编译一下,顺便记录一下我编译的过程. ...

  2. VS2022编译libpng库

    本文将使用VS2022编译libpng,操作系统为Windows10.官网地址:链接 1. 下载源代码 由于 libpng 依赖 zlib ,因此需要下载 libpng 和 zlib 的源代码. li ...

  3. obs windows 编译 obs browser

    参考 https://github.com/obsproject/obs-browser 编译 cef,有些版本号可能编译不过或者与 obs browser 不匹配,需要多尝试,本人测试多次才找到 3 ...

  4. vs2022 编译libmodbus源码

    ​​​​​vs编译libmodbus-C++文档类资源-CSDN下载 项目需要用到了第三方库libmodbus,本文安装的是libmodbus3.1.7,结果如下. 方法一.vs2022编译,默认32 ...

  5. obs studio 编译摄像头源,即视频捕获设备,可以从添加源中找到并使用它

    obs studio 编译摄像头源,即视频捕获设备,可以从添加源中找到并使用它 - 下载源码 git clone https://github.com/obsproject/libdshowcaptu ...

  6. 使用VS2022编译Telegram桌面端(tdesktop)

    2018年的时候参考Telegram桌面端(tdesktop)编译方法成功编译过tdesktop,后来比较忙,就没管它了 这段时间正好在研究IM,就把当年的Telegram工程找出来,依然能正常编译, ...

  7. UE5+VS2022编译Lyra实例项目

    1.从Epic的示例下载Lyra Starter Game. 2.下载后先不用UE5打开,打开下载目录,选择Lyra.uproject,右键选择生成VS sln项目. 3.用VS2022打开新生成的s ...

  8. obs linux编译,obs-studio模块分析与源码编译

    一:直播简介 在线教育,娱乐直播等近几年已是遍地开花,其中核心脱离不了低延时音视频技术.我们抛开互动技术不谈,来了解一下视频直播技术. 直播大致流程如下图: 采集: Windows(dshow,dso ...

  9. 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. ...

  10. 【学习日记】win64配置openni的vs2022编译环境

    1 在structure官网下载OpenNI的SDK,注意版本对应无误 2 解压后,运行msi文件,安装提示完成安装 3 安装后,环境变量中自动生成了三项内容 4 vs2022中的配置: 我选择了re ...

最新文章

  1. mysql能安装的版本下载失败_mysql 安装失败 每次都安装失败 每个版本都失败
  2. 如何做好技术 Team Leader
  3. JavaWeb(九)——JavaBean、Filter
  4. Codeforces 264B Good Sequences ★ (分解素因子+DP)
  5. 如何访问SAP Spartacus里的config数据
  6. goland 实用键
  7. 神奇的pdfkit工具——将字符串保存为pdf文件
  8. java合并表的两行_如何通过SQL将不同数据库表中记录两行合并为一行
  9. MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
  10. JS高级程序设计——阅读笔记一
  11. Matlab编程风格指南--Richard Johnson(命名规则,文件与结构,基本语句,布局,注释与文档)
  12. 状态方程简约为能控能观型
  13. Android 10去除电池图标以及设置
  14. 推广的euclid_欧几里得(Euclid)与拓展的欧几里得算法
  15. 格拉姆矩阵(Gram Matrix)
  16. java面试题系列10
  17. 【转载】深入浅出的讲解傅里叶变换
  18. artisan命令大全
  19. day1学习vue2笔记 vue指令
  20. python图片缩放不失真

热门文章

  1. 数仓学习笔记(3)——数仓建模理论
  2. react 高阶组件
  3. 冶金行业MES系统解决方案
  4. 小程序反馈功能并回显(包括前后端)
  5. 我们该怎么合理的安排自己的工作时间?
  6. 极验验证滑块破解,canvas
  7. java-php-python-ssm新闻资讯头条计算机毕业设计
  8. 分治算法实践6-气球游戏 戳气球 C++
  9. 浅析mysql主从复制
  10. Python学习笔记 - 探索正则表达式re功能