![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
obs
文章平均质量分 76
OBS 视频编辑 录制 二次开发及 源码分析
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
清水迎朝阳
多年windows下c++客户端开发,或多或少踩了很多坑,积累了一些经验
展开
-
OBS 基础 之 添加自己的热键、快捷键
OBS有自己的快捷键逻辑,但是相当复杂,如果想单纯的添加个快捷键实现自定义功能,可以通过自己添加快捷健的方式实现。本篇章介绍 添加快捷健、热键方法。。目录一、热键设置1、简单的快捷键1) 、按键消息中添加快捷键方法2)、QT中提供的快捷健方法2.1)、单纯的加快捷健的话,可以使用QS原创 2023-09-09 10:51:14 · 948 阅读 · 0 评论 -
OBS 基础 之 使用python自动编译打包OBS项目
这里定义要编译到哪里 BuildDirCMAKE 路径QTDIR 路径DepsPath 依赖项路径CWD 当前路径。原创 2023-08-07 16:47:10 · 697 阅读 · 8 评论 -
OBS 基础之 给OBS 添加一个 登录对话框
Q_OBJECTprivate:public://点击×号 关闭时间 close()public:public:protected:private:public:重写需要注意的是,mousemove 默认情况下 只捕捉鼠标按下时鼠标移动情况若是想捕捉,鼠标不按下时的移到情况,需要主UI和本UI控件就开启鼠标追踪下才可以。原创 2023-07-31 17:36:29 · 644 阅读 · 5 评论 -
OBS 基础 之 将录制时间放大显示
原来的录制时间,显示在状态栏,现在需要将其放大,显示在面板中。原创 2023-07-24 16:46:17 · 401 阅读 · 0 评论 -
OBS 基础 之 使用到的坐标体系 及转换
鼠标在画布上点击时,会选中画布中的源,这就是将鼠标坐标转换成了画布坐标,然后再判断点击到了哪个源上面。先获得视频信息,然后base_width就是画布的宽度,根据画布宽度,设置合适位置。这里的画布,是指的预览层上经放缩后的画布, 将鼠标坐标转换为这个缩放后画布上的坐标。在预览窗口中,画布预览大小会随着窗口的大小而改变,这里就有个画布缩放比例问题。其中,base_width、base_height 就是画布的宽高。这里就是 视频的 基础画布,长宽就是设置中设置的 基础画布分辨率。计算DPI下,对应画布坐标。原创 2023-07-21 16:27:18 · 209 阅读 · 0 评论 -
OBS 基础之 混音面板 及 实际静音后,动态后移控件功能
需求就是,将声音静音后,将其移到到末尾,不在怎么关注,取消静音后,再将其向前排列,重新关注。原创 2023-07-04 16:40:14 · 430 阅读 · 0 评论 -
OBS 21版旧项目迁移到29版本
本来想加入NTSTATUS 头文件 ,但是加入后,有重复定义问题,于是,从里面把NTSTATUS定义单独拿出来就好了。另外,新版里没有了 obs.rc, 导致新添资源,重新编译后,资源又没了,因此,把这个文件也拷贝到新版中。之前用的obs版本太低了,现在在obs29基础上开发,因此需要将之前的项目移植到29版本中。调试许久都没找到原因,后来重新CMAKE后,再编译下,但是之后再编译,又失败了。这里新版本比之前我用的那个版本,将一些cmake单独组织了,测试了下,在这里。原创 2023-07-04 10:08:23 · 411 阅读 · 0 评论 -
OBS基础之 OBSBasic.ui XML 布局梳理
对应于UI的如果有自定义类的widget,则在此写出,类名、继承基类、头文件名代码。原创 2023-06-19 10:44:42 · 1593 阅读 · 0 评论 -
OBS 基础之 修改为自己的图标、去掉自动更新
在OBSAbout::OBSAbout 构造函数中,添加要显示的图片。将IDI_ICON 所在路径下的原obs图标,替换为自己的就好了。主要是updateCheckThread,清理与此线程相关的即可,OBSBasic::OBSInit(),中有个自动检测更新逻辑。直接在设计里改是无效的,还得在代码里修改。或直接将这个线程定义注释掉。首先,现在qrc 添加资源。原创 2023-06-13 17:28:23 · 2187 阅读 · 2 评论 -
obs基础之 obs 29 新版编译
目录一、相关资料1、总文档2、29 API 文档3、编译文档二、自动编译1、下载vs20222)、 git clone3、powvershell 编译1)理想情况下2)若提示无法加载文件问题 解决方法3) powshell 执行CI/....ps1脚本时,提示Cmake 版本不够4)提示 CMAKE时候,缺少ffmpeg三、自定义编译1、 软件准备 ,2、 git clone 项目代码3、cmake 编译1)基本入口2)CEF 可选项:3)虚拟摄像头:4) VLC5)vs2022 QT tool6原创 2023-05-29 18:24:16 · 1212 阅读 · 3 评论 -
OBS 基础21 之 设置窗口
OBS 设置窗口原创 2023-05-22 11:10:22 · 1889 阅读 · 0 评论 -
OBS 基础 枚举各种源的方法
不过,实测,即使有的源被删除了,但是还照样枚举上,需要注意。或者 用如下方式获得当前场景。获得的索引为idx的id。比如枚举当前场景下的源。可通过下面方式,测试。原创 2023-03-09 17:42:14 · 368 阅读 · 0 评论 -
OBS 序 源码编译 (vs2013 qt5.8)
OBS BUILD文档https://obsproject.com/wiki/install-instructions#windows-build-directionsvs2013 QTqt 5.8下载http://download.qt.io/archive/qt/5.8/5.8.0/所用的源码及VS依赖项https://download.csdn...原创 2019-12-11 09:59:22 · 599 阅读 · 0 评论 -
下载 编译 OBS 27.2 最新版本
目录一、需要准备的1、WINDOWS SDK2、VS20193、QT 5.15.2 4、power shell 这是系统自带的,可以输入host 看下版本, 5.0以上就可以二、自动编译方式,编译最新版1、git clone --recursive 将子模块一起克隆下来2、项目构成3、自动编译1)首先管理员方式 打开power shell2)自动编译项目方式3)自动下载好的依赖项位置4)编译成功项目地址:https://github.com/obsproject/obs-studioOBS requ原创 2022-07-11 18:35:59 · 1132 阅读 · 4 评论 -
OBS 编程常用接口 1 场景项的处理
目录一、场景项的处理枚举场景项隐藏源列表控件中的 Item 列表项隐藏 场景项将场景项置顶将场景项置底将场景项 置在Z-order具体层次 0是最下层设置源相关属性一、场景项的处理枚举场景项void obs_scene_enum_items(obs_scene_t *scene, bool (*callback)(obs_scene_t*, obs_sceneitem_t*, void*), void *param){ struct ...原创 2021-07-29 11:26:34 · 708 阅读 · 0 评论 -
OBS基础 1 源码简单修改 看看能不能改变
0 QTstr宏QTStr("Basic.Main.PreviewConextMenu.Enable")QTStr("PreviewProjector")QTStr("PreviewWindow")inline const char *Str(const char *lookup) {return App()->GetString(lookup);}#...原创 2019-12-11 17:04:10 · 1724 阅读 · 4 评论 -
OBS 基础 2 各种源的id
OBS很多函数是以源id为参数的,id,是定义在源的导出接口中的比如struct obs_source_info window_capture_info = { .id = "window_capture", .type = OBS_SOURCE_TYPE_INPUT, .output_flags = OBS_SOURC...原创 2019-12-12 09:47:21 · 1349 阅读 · 0 评论 -
OBS 基础 3 各种源 场景项 setting应用方式
可通过 obs_enum_sources(cb, this);枚举//视频捕获设备。原创 2019-12-13 16:38:06 · 1472 阅读 · 7 评论 -
OBS 基础4 源的菜单创建 及添加源的处理
OBS添加各种源的操作集中在void OBSBasic::AddSource(const char *id)这是通过菜单项ACTION对应的槽函数跳转到这里的void OBSBasic::AddSourceFromAction(){ QAction *action = qobject_cast<QAction*>(sender()); if (!...原创 2019-12-11 17:01:55 · 1716 阅读 · 0 评论 -
OBS 基础5 Basic窗口分析
1概览参照OBSBasic.uiOBS窗口为一个QMainWindow窗口由中央widget 菜单栏状态栏还有五个dock窗口组成在 ui_OBSBasic.h中,可以看到centralwidget : centralwidget = new QWidget(OBSBasic); centr...原创 2019-12-16 15:44:58 · 1211 阅读 · 4 评论 -
OBS 基础6 路径配置
OBS全局配置,默认保存位置:C:\Users\pc\AppData\Roaming\obs-studio/global.ini看看保存的内容[General]Pre19Defaults=falsePre21Defaults=falseLicenseAccepted=trueLastUpdateCheck=0InstallGUID=c4169257556d...原创 2020-03-23 12:22:41 · 4961 阅读 · 5 评论 -
obs 基础 7 属性窗口 及 属性获得
以摄像头属性窗口为例进行介绍:几个常用的宏属性名字#define VIDEO_DEVICE_ID "video_device_id" //设备ID#define RESOLUTION "resolution" //分辨率#define VIDEO_DEVICE_ID "video_device_id"#def...原创 2019-12-12 15:13:26 · 1237 阅读 · 0 评论 -
OBS 基础8 源窗口 自定义SourceListWidget 列表分析
前面分析了源窗口信号槽的关联及触发机制下面这篇文章主要分析下UI层自定义的源列表1 首先,看看添加场景项的函数代码void OBSBasic::AddSceneItem(OBSSceneItem item){ obs_scene_t *scene = obs_sceneitem_get_scene(item); if (GetCurrentSc...原创 2019-12-13 16:24:22 · 608 阅读 · 1 评论 -
OBS 基础9 源窗口 信号槽分析
0派生的QListWidget子类SourceListWidget#include <QListWidget>class QMouseEvent;class SourceListWidget : public QListWidget { Q_OBJECT bool ignoreReorder = false;publ...原创 2019-12-13 14:45:23 · 574 阅读 · 0 评论 -
OBS 基础10 录制视频
一 开始录制按钮1) 托盘菜单 connect(sysTrayRecord, SIGNAL(triggered()), this, SLOT(on_recordButton_clicked()));void OBSBasic::SystemTrayInit(){ trayIcon = new QSystemTrayIcon(QIcon(":/res/ima...原创 2020-03-10 13:41:40 · 648 阅读 · 0 评论 -
OBS 基础11 添加自定义对话框
1 、 ui资源存放位置obs中,UI对话框资源存放在 obs-studio\ui\forms下2、右键,add New Iteam这样就添加了一个UI文件对其进行命名,这个名字就对应着.h中的类名3、有了UI文件,还要生成对应的.h文件,并将其添加到VS中。原创 2020-03-02 17:47:05 · 1868 阅读 · 1 评论 -
OBS 基础12 预览层点击事件处理
一 QT 鼠标事件处理QT中,处理鼠标事件,要重载几个函数 virtual void wheelEvent(QWheelEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; //鼠标弹起 virtual void mouseMoveEvent(QM...原创 2020-11-10 11:42:57 · 558 阅读 · 2 评论 -
OBS 基础 13 OBS设置项 热键页面梳理
本文主要对,OBS设置页面,热键页的代码进行梳理,所用的主要是QT方面的知识1 热键LabelOBSHotkeyLabel实现的功能如下: 鼠标移到Label上时,这一个label及与之相关联的label置红1.1自定义label类要实现这个功能,需要自定义label类这个Label有一个关联的成对的label 还有一个关联的widget 由 QLineEdit和几个按钮组成 ...原创 2020-11-19 17:57:20 · 1757 阅读 · 3 评论 -
OBS 基础 14 视频信息设置
视频信息本节主要介绍 OBS视频基础结构,重要的是帧率、合成时的视频宽高、输出时的视频宽高等信息系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结读取提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas ...原创 2020-12-26 18:45:08 · 377 阅读 · 0 评论 -
OBS 基础 15 添加自定义类
OBS 基础添加自定义类再已经cmaker的项目中,添加自定义类,可以和VS其它项目一样添加但默认添加的文件位于obs build项目中, 不在obs source项目中。如果以后不再重新cmaker了,那没问题,但如果重新cmaker,则就会缺少文件了。我今天换了电脑,重新cmaker后,就发现问题了。顺便找了下解决方法,在此整理下, 介绍下如何在obs cmaker中,添加自定义类。一、添加自定义类通过VS 添加的自定义类,会在build项目路...原创 2021-01-28 17:07:10 · 322 阅读 · 0 评论 -
OBS 基础 16 如何在CMake中添加新的lib库、头文件等
点的原创 2021-08-19 18:49:44 · 1775 阅读 · 2 评论 -
OBS 基础17 自定义右键菜单 以及 与插件变量交互
一 、OBS右键菜单其实使用的 Qt::CustomContextMenu将widget的contextMenuPolicy设置为Qt::CustomContextMenu鼠标右击 就会触发QWidget::customContextMenuRequested信号使用默认槽函数,写右键菜单事件。void OBSBasic::on_sources_customContextMenuRequested(const QPoint &pos){ if (ui-...原创 2021-08-24 18:14:33 · 393 阅读 · 0 评论 -
OBS 基础18 自定义录像文件名格式
1、获得当前视频保存路径 const char *path = config_get_string(main->Config(), "SimpleOutput", "FilePath");QString OBSBasic::GetCurVideoSaveDir(){ const char *pathDir = config_get_string(Config(), "SimpleOutput", "FilePath"); string strDir; strDir..原创 2021-10-25 14:37:27 · 1597 阅读 · 0 评论 -
OBS 基础19 窗口置顶
一、如何设置窗口置顶BOOL SetWindowPos( [in] HWND hWnd, [in, optional] HWND hWndInsertAfter, [in] int X, [in] int Y, [in] int cx, [in] int cy, [in] UINT uFlags);其中,hWndInsertAf...原创 2021-11-17 17:06:30 · 1138 阅读 · 0 评论 -
OBS 基础 20 录制流程梳理 及控件面板UI改造
font:30px "宋体"}OBS中,已经定义了 设置 事件,将其和QToolButton对应起来就可了。如果不设置,则根据内容动态宽高,因为隐藏了很多按钮,所以有可能比较窄了。在Basic.Main.Controls中,添加一个Label。在OBSBasic构造函数中 ,直接隐藏其它控件。在OBSBasic构造函数中,添加对应关系就可。若想只一个主题,可将默认的其它主题删除即可。设置QToolButton 样式。录制结束,生成完了视频。原创 2022-09-28 11:50:09 · 448 阅读 · 0 评论 -
OBS 进阶 之 整体风格QSS设置
一 OBS整体风格主题OBS整体风格,由QSS文件设置,其安装位置在于项目位置位于二 项目中加载主题OBS初始化时,已经初始加载了主题文件void OBSApp::AppInit(){ ProfileScope("OBSApp::AppInit"); if (!InitApplicationBundle()) throw "Failed to initialize application bundle"; ...原创 2020-12-03 14:21:47 · 609 阅读 · 2 评论 -
OBS 进阶 之 自定义OBS标题栏
默认的标题栏和整体样式不搭,因此需要自定义一个标题栏一思路大体思路是: 创建一个父Widget容器 创建一个标题栏Widget容器 创建一个布局,添加标题栏和 OBS Mainwindow窗口 将此布局,设置为父容器的整体布局更换自定义标题栏后,整体效果如下...原创 2020-11-17 18:47:20 · 1806 阅读 · 2 评论 -
OBS 进阶 之 自定义OBS标题栏 扩展,添加拉伸功能
上一节,虽然添加了自定义标题栏,但是没有拉伸功能,现在把这个功能补上。其实,这属于QT范畴,大体思路如下:1)要拉伸,得让光标在上下左右及四个边角,显示不同的拉伸形状因此,第一步要监听窗口的鼠标HOVER事件,根据光标在不同位置,设置不同的形状2)实现拉伸,监听MOUSEMOVE 事件,根据鼠标位置,计算最新的窗口矩形大小,然后将窗口设置为最新大小。3)移动标题栏,实现移动窗口,监听MOUSEMOVE事件,当不为拉伸动作时,则移动窗口。原创 2023-01-11 17:22:24 · 985 阅读 · 0 评论 -
OBS 进阶 之 高分屏下 屏幕采集不全问题解决
目录一、DPI问题由来二、解决方法1、修改屏幕采集模块win-capture的枚举显示器部分2、DPI下,回调的rect 可能是受DPI影响的,这里得修正下一、DPI问题由来再高分辨率电脑下,有时候会对软件进行DPI设置,以让系统放缩软件大小比如,进行了如下设置此时,OBS会根据DPI进行缩放, 但如果DPI不为100%时,会发现,采集桌面屏幕时,桌面屏幕采集不全二、解决方法1、修改屏幕采集模块win-capture的枚举显示器部分EnumDis...原创 2021-11-12 15:10:03 · 2431 阅读 · 0 评论 -
OBS 进阶开发 之 设置屏幕采集GDI兼容模式 与 高效模式
OBS中,默认的是根据系统和显卡 自动选择使用哪种模式,但是在我的需求中,需要指定使用GDI方式,还是DXGI高效方式。首先,将配置写到INI文件中,运行时,读取配置文件,判断选择哪一个模式, 在主窗口中,使用右键菜单,选择下次使用时使用哪个模式,写到配置文件中。难点,plugin-main.c 是c语言函数,c++常用的读取INI函数用不了,需要自己写。原创 2022-12-14 11:13:40 · 574 阅读 · 0 评论