
OBS
爱学习的姜老师
这个作者很懒,什么都没留下…
展开
-
OBS源码学习笔记(一)
昨天才知道obs原来是开源的,很兴奋,把obs源码下载下来编译了一下,虽然中间还是出现了一些问题,但总算顺利编译出可执行文件,并可以调试,了解了下OBS的主要代码,界面主要是用qt编写。obs-app.cpp是main入口文件,然后通过load_debug_privilege函数,修改了下进程的权限,调用base_set_crash_handler设置全局的crash_handler,原创 2016-08-31 09:52:17 · 7807 阅读 · 1 评论 -
OBS源码编译(20170320下载的版本)
老是忘了怎么编译,又要去重现找,这里记到自己的博客里面吧:1、按照官网的方法下载相应的软件,qt,vs,dep,cmake;2、设置依赖:DepsPath 对应 D:/git/obs-studio/dependencies2015/win32/includeFFmpegPath 对应 D:/git/obs-studio/dependencies2015/win32/inc原创 2017-03-20 10:13:28 · 1368 阅读 · 0 评论 -
OBS源码阅读笔记--将声音设置和场景挂钩
在切换场景时,声音一直不变,和场景没有关联性,这在插播的场合很不好用,要点两次按钮,然后会有尾音,现在要看看代码,想办法将声音的配置和场景相结合;我们要先看看界面上的混音器控件是咋添加上声音的:我们看到声音条好像是在volumeWidgets中的,搜索代码,发现有:ui->volumeWidgets->layout()->addWidget(vol);我们将他注释掉看看是否就没有声音条原创 2016-10-18 16:17:16 · 4042 阅读 · 1 评论 -
OBS源码阅读笔记--32位的无法检测摄像头问题
32位的编译完后,发现无法检测到摄像头,办法是把bin同一级目录的obs-plugins替换,从安装的obs目录中拷贝这个目录替换自己的这个目录就可以了原创 2016-11-01 14:14:30 · 3313 阅读 · 2 评论 -
OBS源码阅读笔记(三)--RTMP
首先,我们来看window-basic-main-outputs.cpp,在SimpleOutput构造函数中,调用streamOutput = obs_output_create("rtmp_output", "simple_stream", nullptr, nullptr);创建一个RTMP输出流;该输出流的结构体定义在rtmp-stream.c中:struct obs_ou原创 2016-09-06 09:25:53 · 5198 阅读 · 0 评论 -
OBS源码阅读笔记--如何修改录播文件路径到exe所在目录
为了简化OBS操作,我们需要将录像文件最好是保存到exe当前目录下,这样用户就可以不用到“设置“里面设置了;通过查看obssetting.ui,我们知道,路径设置的lineedit是advOutRecPath;我看查看下SaveOutputSettings这个函数:他有调用:SaveEdit(ui->advOutRecPath, "AdvOut", "RecFilePath");在原创 2016-10-18 15:16:20 · 2065 阅读 · 0 评论 -
OBS源码阅读笔记--绿化配置文件路径
OBS的配置文件路径现在是在C:\Users\Administrator\AppData\Roaming\obs-studio这种目录里面;如果生成了exe,想要去掉“设置”按钮,让我们事先设置好配置用户不需要关心设置里面繁杂的内容,那么就要改变这个路径;最好的方案就是将该路径设置为当前exe所在的目录;通过阅读代码,发现只要修改一下几个函数,就可以将配置文件整个路径修改到exe中:原创 2016-10-18 15:03:07 · 2974 阅读 · 2 评论 -
OBS源码阅读笔记--如何在外部修改推流分辨率
obs如何自定义分辨率,不需要使用“设置”按钮里面的界面来修改;原创 2016-10-17 20:39:41 · 2501 阅读 · 3 评论 -
OBS源码阅读笔记(七)--如何往工程中添加自己的界面
OBS的工程编译后是一个VS工程,那如果想自己加个对话框怎么办呢?首先往工程中添加自己的ui文件,比如login.ui,然后参考OBSBasic.ui的属性,修改为自定义工具,然后将OBSBasic的配置复制到login.ui中;对,程序会自动将对于生成的ui_login.h添加到当前工程中;首先需要自己添加对应类的.hpp文件和.cpp文件;然后修改CMakeList.txt原创 2016-09-29 09:50:17 · 4390 阅读 · 0 评论 -
OBS源码阅读笔记(六)--推流地址设置
OBS的推流地址是在哪里设置的呢?我们来看看吧:首先我们反着来推,比较方便查找:在rtmp_stream.c中,有个connect_thread线程函数,该行数应该就是处理RTMP连接的,那么里面肯定就有关于推流地址的信息:info("Connecting to RTMP URL %s...", stream->path.array);RTMP_AddStream(&strea原创 2016-09-28 14:15:50 · 7549 阅读 · 1 评论 -
OBS源码阅读笔记(四)--视频采集显示
下面来看看OBS如何进行初始化视频采集的:首先,在OBS的初始化程序中,会调用ResetVideo==>AttemptToResetVideo==>obs_reset_video==>obs_init_video==>video_output_open==>if (pthread_create(&out->thread, NULL, video_thread, out) != 0)最后创建原创 2016-09-06 11:49:59 · 7710 阅读 · 6 评论 -
OBS源码学习笔记(二)
采集模块:在win-dshow中,该模块会生成win-dshow.dll;该目录主要是使用dshow来做音视频采集;了解该处的代码,可以了解如何实现音视频分离;有视频采集的代码,现在看dshowcapture.cpp中的代码,DShow中主要SetupVideoCaptureobs-module.h中定义了obs插件模块的公共接口函数:o原创 2016-09-03 10:14:37 · 7439 阅读 · 0 评论 -
OBS源码阅读笔记--去掉顶部menubar
OBS顶部的menubar实在看上去是太复杂了,我们想去掉他,怎么搞呢?可以用ui->menubar->setvisiable(false)来隐藏;但是这样,会导致”适配到屏幕“这个很有用的功能无效;怎么办?看看代码吧,该功能的处理是在:actionFitToScreen中处理的,在actionFitToScreen->setShortcut(QApplication::trans原创 2016-10-18 16:01:59 · 1116 阅读 · 0 评论 -
OBS源码阅读笔记--如何给source添加展示画面的地方呢?
1、qt有个功能可以将控件提升为自定义控件,我在obs的主界面上放置4个OBSDisplay控件,后面可以通过程序来进行创建比较好;2、搜索obs_display_add_draw_callback来了解这个函数到底在哪些地方被使用了;原创 2016-11-03 14:03:13 · 3383 阅读 · 1 评论 -
OBS源码阅读笔记---32位编译
发现obs编译出的64位版本在某些机器上运行报0xc000007b错误,原因不太清楚,可能是缺少某些dll文件;而且使用obs-studio的原始安装版本,同样64位无法运行报0xc000007b错误,但是32位又运行正常,所以想能否编译出32位版本;编译方法参考64位版本的cmake编译方式,只是一开始选择编译目标机器的时候,不要选择vs64位的,选择vs2013的就可以了,不带原创 2016-10-22 10:15:09 · 1379 阅读 · 1 评论 -
最新版本OBS--moc文件自动生成的方法
最新版本的obs,2017-03-20下载,moc文件是自动生成的,一开始完全懵逼了,之前都是自己手动用moc从.h生成,现在完全没找到哪里把自动生成的moc加入,研究了半天,总算搞明白怎么自动生成了:1、在用cmake生成完工程后,在xxx-prj\UI\CMakeFiles\obs_automoc.dir下有一个AutogenInfo.cmake文件,这是由cmake为我们自动生成的:原创 2017-03-20 15:22:01 · 1481 阅读 · 1 评论