auto-obs-rb-restart/AutoOBSRBRestart.lua

55 lines
1.2 KiB
Lua
Raw Normal View History

2024-10-07 20:23:21 +02:00
obs = obslua
local wait_time = 7200 -- Wait 2 hours before checks
local idle_time = 120 -- Wait for any input in the last 2 minutes
function script_description()
2024-10-07 21:20:48 +02:00
return [[
Automatically restarts the replay buffer when IDLE
Author: Mylloon
]]
2024-10-07 20:23:21 +02:00
end
function script_load()
ffi = require("ffi")
ffi.cdef[[
void start_hook(void);
void stop_hook(void);
time_t last_time_input_received(void);
2024-10-07 20:23:21 +02:00
]]
monitor = ffi.load(script_path() .. "monitor.dll")
obs.timer_add(check_restart, wait_time * 1000)
end
function script_unload()
obs.timer_remove(check_restart)
obs.timer_remove(check_idle)
end
function check_restart()
monitor.start_hook()
obs.timer_add(check_idle, idle_time * 1000)
end
function check_idle()
local current_time = os.time()
local last_input_time = monitor.last_time_input_received()
2024-10-07 21:20:48 +02:00
if current_time - last_input_time >= idle_time then
2024-10-07 20:23:21 +02:00
monitor.stop_hook()
obs.timer_remove(check_idle)
restart_replay_buffer()
end
end
function restart_replay_buffer()
obs.obs_frontend_replay_buffer_stop()
obs.timer_add(start_replay_buffer, 2000)
end
function start_replay_buffer()
obs.timer_remove(start_replay_buffer)
obs.obs_frontend_replay_buffer_start()
end