64 lines
2.1 KiB
Lua
64 lines
2.1 KiB
Lua
obs = obslua
|
|
stop_target = ""
|
|
start_target = ""
|
|
pause_target = ""
|
|
|
|
function source_activated(cd)
|
|
local source = obs.calldata_source(cd, "source")
|
|
if source ~= nil then
|
|
local name = obs.obs_source_get_name(source)
|
|
if pause_target == name then
|
|
obs.obs_frontend_recording_pause(true)
|
|
elseif stop_target == name then
|
|
obs.obs_frontend_recording_stop()
|
|
elseif start_target == name then
|
|
obs.obs_frontend_recording_start()
|
|
end
|
|
end
|
|
end
|
|
function source_deactivated(cd)
|
|
local source = obs.calldata_source(cd, "source")
|
|
if source ~= nil then
|
|
local name = obs.obs_source_get_name(source)
|
|
if pause_target == name then
|
|
obs.obs_frontend_recording_pause(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function script_properties()
|
|
local props = obs.obs_properties_create()
|
|
|
|
local pStart = obs.obs_properties_add_list(props, "start_target", "start target", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
|
|
local pStop = obs.obs_properties_add_list(props, "stop_target", "stop target", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
|
|
local pPause = obs.obs_properties_add_list(props, "pause_target", "pause target", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
|
|
local sources = obs.obs_enum_sources()
|
|
if sources ~= nil then
|
|
for _, source in ipairs(sources) do
|
|
local name = obs.obs_source_get_name(source)
|
|
obs.obs_property_list_add_string(pStart, name, name)
|
|
obs.obs_property_list_add_string(pStop, name, name)
|
|
obs.obs_property_list_add_string(pPause, name, name)
|
|
end
|
|
end
|
|
obs.source_list_release(sources)
|
|
|
|
return props
|
|
end
|
|
|
|
function script_description()
|
|
return "start/stop recording when specified source is in active scene"
|
|
end
|
|
|
|
function script_update(settings)
|
|
stop_target = obs.obs_data_get_string(settings, "stop_target")
|
|
start_target = obs.obs_data_get_string(settings, "start_target")
|
|
pause_target = obs.obs_data_get_string(settings, "pause_target")
|
|
end
|
|
|
|
function script_load(settings)
|
|
local sh = obs.obs_get_signal_handler()
|
|
obs.signal_handler_connect(sh, "source_activate", source_activated)
|
|
obs.signal_handler_connect(sh, "source_deactivate", source_deactivated)
|
|
end
|