obs studio编程方式有三种
一、python lua脚本
官网文档:https://obsproject.com/wiki/Getting-Started-With-OBS-Scripting
python lua脚本必须定义脚本环境在脚本生命周期的不同阶段和OBS的不同执行阶段调用的一些全局脚本函数。在实现相关全局脚本函数的位置执行以下步骤。
OBS启动时调用的全局脚本函数
当脚本之前添加到 OBS 时,在启动时:
脚本文件的内容在新的脚本执行上下文中读取和解释(全局脚本函数在第一次执行期间定义)
script_defaults(settings)调用以初始化数据设置中的默认值
script_description()调用以检索要在“脚本”窗口中显示的描述字符串(使用Qt 样式格式:bulb:)
script_load(settings)调用一次性初始化,可能使用数据设置的值(通常用于设置信号处理程序)
script_update(settings)根据数据设置的值首次调用初始化(在数据设置中更改任何值后将再次调用此函数,见下文)
请注意:
OBS启动期间可用的数据设置值反映了上一次OBS关闭时保存的状态(用户更改的属性),并且已经在何时设置,并且被调用settingssettingsscript_defaultsscript_loadscript_update
由于OBS不存储用户未更改的属性的值,即属性仍设置为其默认值,因此这些值在OBS启动时何时不可用(并且由稍后在和settingsscript_defaultsscript_defaultsscript_loadscript_update)
在OBS启动期间,在前端加载场景和源之前执行步骤1到5(beforeis发出)。如果查找源或场景,这一点尤其重要。OBS_FRONTEND_EVENT_FINISHED_LOADINGscript_update
检查OBS如何将属性保存在用户的JSON配置文件中(在Windows下),以更好地了解发生了什么。[UserFolder]\AppData\Roaming\obs-studio\basic\scenes
调用每一帧的全局脚本函数
在OBS执行过程中,一旦脚本初始化,就会调用每个渲染帧(即自上一帧以来经过的时间(以秒为单位)。如果可能,请考虑使用计时器而不是重复测试。script_tick(seconds)secondsscript_tick
警告:请非常小心代码,如果每帧记录一些错误或文本,OBS 可能会迅速变得无响应。script_tick
OBS闭包时调用的全局脚本函数
关闭OBS时调用两个全局脚本函数:
script_save(settings)在持久保存数据设置之前调用
script_unload()在销毁脚本执行上下文之前调用
数据设置在OBS关闭时自动保存,脚本无需调用任何函数来保存数据设置(也不需要实现触发OBS来保存脚本设置的数据)。script_savescript_unload
可编辑属性的全局脚本函数
OBS启动完成后,如果在脚本窗口中选择了脚本,则由OBS调用(选择另一个脚本将始终调用相关函数)。script_properties()script_properties
该函数必须返回使用obs_properties_create创建并通过obs_properties_add_*函数填充 GUI 元素的对象。必要时,OBS会释放该对象。obs_properties_t
可以使用obs_property_set_modified_callback为每个属性设置回调函数。
更改属性的值时,顺序为:
script_update(settings)被调用(用于根据数据设置的值进行初始化)
调用修改后属性的回调
请注意:
:bulb:属性的描述支持Qt 样式格式
:bulb:在属性上设置的回调函数必须返回 true 才能触发属性小部件的刷新(没有新的调用obs_property_set_modified_callbackscript_properties)
如果每个脚本修改了另一个属性或数据设置,例如 in,则不会自动触发其回调,请使用obs_properties_apply_settings触发所有回调(例如,使用 in 保存在全局变量中的属性对象script_updatescript_updatescript_properties)
全局脚本函数调用其他操作的序列
脚本窗口上的管理操作会触发更复杂的序列(本节中描述的与 OBS v26.1 中一样,将来行为可能会更改)。
添加脚本:
初始化步骤与OBS启动类似,只是数据设置的值不可用:
第一个脚本执行
script_defaults
script_description
script_load
script_update
然后,在“脚本”窗口中选择脚本时,将初始化并显示属性:
script_properties
为所有属性调用所有“修改的回调”(数据设置仍然不可用)
script_properties再
script_update使用可用的数据设置
调用在前面的步骤中实际更改的属性的“修改后的回调”
:warning:如果不仔细处理,完整的序列可能会导致不一致,因为相同的函数被多次调用,包括步骤 7 中的属性回调,而数据设置不可用(感谢 eukraticism 指出此行为)。
删除脚本只会触发对(不是)的调用。script_unloadscript_save
重置为默认值首先调用 ,然后执行与删除然后重新添加脚本相同的步骤(数据设置不可用)。script_update
重新加载脚本与删除然后重新添加脚本相同,只是数据设置的值在整个序列中可用。
二、python websocket来远程控制obs
然后通过python或js来远程操作obs了
python操作obs websocket代码:https://github.com/aatikturk/obsws-python
js操作obs websocket代码:https://github.com/obs-websocket-community-projects/obs-websocket-js
三、窗口捕获或浏览器h5网页控制obs输出画面内容
1、新建一个窗口捕获或浏览器,将自己写好的h5程序地址url放进去,然后就可以远程操作这个输出了。
网友回复