Projet_multi_stream_obs/methode2/scriptboth.lua

129 lines
5.1 KiB
Lua
Raw Permalink Normal View History

obs = obslua
youtube_output = nil
twitch_output = nil
function script_description()
return "Multi RTMP Output - Diffusez sur plusieurs serveurs RTMP simultanément. Configurer les serveurs RTMP pour YouTube et Twitch."
end
function script_properties()
local props = obs.obs_properties_create()
-- Paramètres YouTube
obs.obs_properties_add_text(props, "youtube_server", "YouTube RTMP Server", obs.OBS_TEXT_DEFAULT)
obs.obs_properties_add_text(props, "youtube_key", "YouTube Stream Key", obs.OBS_TEXT_PASSWORD)
-- Paramètres Twitch
obs.obs_properties_add_text(props, "twitch_server", "Twitch RTMP Server", obs.OBS_TEXT_DEFAULT)
obs.obs_properties_add_text(props, "twitch_key", "Twitch Stream Key", obs.OBS_TEXT_PASSWORD)
obs.obs_properties_add_button(props, "start_youtube", "Commencer YouTube Streaming", start_youtube_streaming)
obs.obs_properties_add_button(props, "stop_youtube", "Arrêter YouTube Streaming", stop_youtube_streaming)
obs.obs_properties_add_button(props, "start_twitch", "Commencer Twitch Streaming", start_twitch_streaming)
obs.obs_properties_add_button(props, "stop_twitch", "Arrêter Twitch Streaming", stop_twitch_streaming)
obs.obs_properties_add_button(props, "start_both", "Commencer les deux Streaming", start_both_streaming)
obs.obs_properties_add_button(props, "stop_both", "Arrêter les deux Streaming", stop_both_streaming)
return props
end
function script_update(settings)
local youtube_server = obs.obs_data_get_string(settings, "youtube_server")
local youtube_key = obs.obs_data_get_string(settings, "youtube_key")
local twitch_server = obs.obs_data_get_string(settings, "twitch_server")
local twitch_key = obs.obs_data_get_string(settings, "twitch_key")
if youtube_server ~= "" and youtube_key ~= "" then
local youtube_settings = obs.obs_data_create()
obs.obs_data_set_string(youtube_settings, "server", youtube_server)
obs.obs_data_set_string(youtube_settings, "key", youtube_key)
local youtube_service = obs.obs_service_create("rtmp_custom", "YouTube RTMP Service", youtube_settings, nil)
youtube_output = obs.obs_output_create("rtmp_output", "YouTube RTMP Output", nil, nil)
obs.obs_output_set_service(youtube_output, youtube_service)
obs.obs_data_release(youtube_settings)
obs.script_log(obs.LOG_INFO, "YouTube RTMP output configured")
end
if twitch_server ~= "" and twitch_key ~= "" then
local twitch_settings = obs.obs_data_create()
obs.obs_data_set_string(twitch_settings, "server", twitch_server)
obs.obs_data_set_string(twitch_settings, "key", twitch_key)
local twitch_service = obs.obs_service_create("rtmp_custom", "Twitch RTMP Service", twitch_settings, nil)
twitch_output = obs.obs_output_create("rtmp_output", "Twitch RTMP Output", nil, nil)
obs.obs_output_set_service(twitch_output, twitch_service)
obs.obs_data_release(twitch_settings)
obs.script_log(obs.LOG_INFO, "Twitch RTMP output configured")
end
end
function start_youtube_streaming(props, prop)
if youtube_output then
if not obs.obs_output_active(youtube_output) then
local success = obs.obs_output_start(youtube_output)
if success then
obs.script_log(obs.LOG_INFO, "Started YouTube RTMP output")
else
obs.script_log(obs.LOG_ERROR, "Failed to start YouTube RTMP output")
end
end
end
end
function stop_youtube_streaming(props, prop)
if youtube_output then
if obs.obs_output_active(youtube_output) then
obs.obs_output_stop(youtube_output)
obs.script_log(obs.LOG_INFO, "Stopped YouTube RTMP output")
end
end
end
function start_twitch_streaming(props, prop)
if twitch_output then
if not obs.obs_output_active(twitch_output) then
local success = obs.obs_output_start(twitch_output)
if success then
obs.script_log(obs.LOG_INFO, "Started Twitch RTMP output")
else
obs.script_log(obs.LOG_ERROR, "Failed to start Twitch RTMP output")
end
end
end
end
function stop_twitch_streaming(props, prop)
if twitch_output then
if obs.obs_output_active(twitch_output) then
obs.obs_output_stop(twitch_output)
obs.script_log(obs.LOG_INFO, "Stopped Twitch RTMP output")
end
end
end
function start_both_streaming(props, prop)
start_youtube_streaming(props, prop)
start_twitch_streaming(props, prop)
end
function stop_both_streaming(props, prop)
stop_youtube_streaming(props, prop)
stop_twitch_streaming(props, prop)
end
function script_load(settings)
obs.obs_frontend_add_event_callback(function(event)
if event == obs.OBS_FRONTEND_EVENT_STREAMING_STARTING then
start_both_streaming(nil, nil)
elseif event == obs.OBS_FRONTEND_EVENT_STREAMING_STOPPING then
stop_both_streaming(nil, nil)
end
end)
end