def create_muted_callback(sn): global callback_name if sn is None or sn == callback_name: return False # source hasn't changed or callback is already set if callback_name is not None: remove_muted_callback(callback_name) source = obs.obs_get_source_by_name(sn) if source is None: if sources_loaded: # don't print if sources are still loading dprint("ERROR: Could not create callback for", sn) return False handler = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(handler, "mute", mute_callback) callback_name = sn # save name for future reference dprint("Added callback for \"{:s}\"".format( obs.obs_source_get_name(source))) if port: # if the serial port is open... obs.timer_add(send_initial_state, init_state_delay) # send the initial state obs.obs_source_release(source) return True
def register_output_stream_callbacks(output_name): output = obs.obs_get_output_by_name(output_name) signal_handler = obs.obs_output_get_signal_handler(output) obs.signal_handler_connect(signal_handler, "start", load_start_url_streamcb) obs.signal_handler_connect(signal_handler, "stop", load_stop_url_streamcb) obs.obs_output_release(output)
def script_load(settings): signal_handler = obs.obs_get_signal_handler() obs.signal_handler_connect(signal_handler, "source_activate", signal_receiver) obs.signal_handler_connect(signal_handler, "source_deactivate", signal_receiver) update_text()
def connect_handler(): global signal_handler disconnect_handler() signal_handler = obs.obs_get_signal_handler() obs.signal_handler_connect(signal_handler, "source_activate", source_activated)
def update_recording_callback(reconnect=True): if opencastplug.recording_signal_handler is not None: obs.signal_handler_disconnect(opencastplug.recording_signal_handler, "stop", cb_recording_finished) if reconnect: opencastplug.recording_signal_handler = obs.obs_output_get_signal_handler( obs.obs_frontend_get_recording_output()) obs.signal_handler_connect(opencastplug.recording_signal_handler, "stop", cb_recording_finished)
def save_sceneitem_for_shake(sceneitem): global shaken_sceneitem, shaken_sceneitem_angle shaken_sceneitem = sceneitem shaken_sceneitem_angle = obs.obs_sceneitem_get_rot(sceneitem) # Handles scene item deletion global shaken_scene_handler scene_as_source = obs.obs_scene_get_source(obs.obs_sceneitem_get_scene(sceneitem)) shaken_scene_handler = obs.obs_source_get_signal_handler(scene_as_source) obs.signal_handler_connect(shaken_scene_handler, "item_remove", on_shaken_sceneitem_removed)
def script_load(settings): """ Connect hotkey and activation/deactivation signal callbacks """ _sh = obs.obs_get_signal_handler() obs.signal_handler_connect(_sh, "source_activate", source_activated) obs.signal_handler_connect(_sh, "source_deactivate", source_deactivated) _hotkey_id = obs.obs_hotkey_register_frontend("reset_timer_thingy", "Reset Timer", reset) _hotkey_save_array = obs.obs_data_get_array(settings, "reset_hotkey") obs.obs_hotkey_load(_hotkey_id, _hotkey_save_array) obs.obs_data_array_release(_hotkey_save_array)
def script_update(settings): global is_active, visibility_handler is_active = obs.obs_data_get_bool(settings, "is_active") if is_active: scenes = obs.obs_frontend_get_scenes() for scene in scenes: visibility_handler = obs.obs_source_get_signal_handler(scene) obs.signal_handler_connect(visibility_handler, "item_visible", on_visibility_toggle) obs.source_list_release(scenes) else: obs.signal_handler_disconnect(visibility_handler, "item_visible", on_visibility_toggle) visibility_handler = None obs.remove_current_callback()
def script_load(settings): # Check for wrong DPI scaling or resolution # This warning doen't really work if DPI scaling is off if not (win32api.GetSystemMetrics(0) == 1920 and win32api.GetSystemMetrics(1) == 1080): raise Exception( 'Ошибка! Программа поддерживает запись только в разрешении 1920х1080 с настройкой DPI scaling в Windows на 100%.' ) recording_signal_handler = obs.obs_output_get_signal_handler( obs.obs_frontend_get_recording_output()) obs.signal_handler_connect(recording_signal_handler, "starting", cb_recording_starting) obs.signal_handler_connect(recording_signal_handler, "stop", cb_recording_stop) print('Script loaded')
def script_load(settings_): global settings settings = settings_ # monitor all shown sources on load sources = obs.obs_enum_sources() for source in sources: if obs.obs_source_showing(source) and obs.obs_source_get_type( source) == obs.OBS_SOURCE_TYPE_INPUT: monitor_source(source) obs.source_list_release(sources) # connect to 'source_show' event to monitor all added sources when shown obs.signal_handler_connect(obs.obs_get_signal_handler(), 'source_show', monitor_source_callback)
def set_up_sources(): sources = obs.obs_enum_sources() for source in sources: handler = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(handler, "activate", source_activated) obs.signal_handler_connect(handler, "deactivate", source_deactivated) obs.signal_handler_connect(handler, "hide", source_hidden) obs.signal_handler_connect(handler, "show", source_shown) #obs.obs_source_release(source) obs.source_list_release(sources)
def create_muted_callback(sn): global callback_name if sn is None or sn == callback_name: return False # source hasn't changed or callback is already set if callback_name is not None: remove_muted_callback(callback_name) source = obs.obs_get_source_by_name(sn) if source is None: return False handler = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(handler, "mute", mute_callback) callback_name = sn # save name for future reference obs.obs_source_release(source) return True
def script_update(settings): logger.debug('script_update') cached_settings["use_default_fps"] = obs.obs_data_get_bool(settings, "use_default_fps") cached_settings["custom_fps"] = obs.obs_data_get_int(settings, "custom_fps") cached_settings["enabled"] = obs.obs_data_get_bool(settings, "enabled") if cached_settings["enabled"]: logger.info('Registering start and stop handlers.') signal_handler = obs.obs_output_get_signal_handler(output) try: obs.signal_handler_connect(signal_handler, 'start', recording_start_handler) obs.signal_handler_connect(signal_handler, 'stop', recording_stopped_handler) except RuntimeError as e: logger.critical(f'Disregarding error when connecting start and stop handlers: {e}') else: logger.info('Disconnecting start and stop handlers.') signal_handler = obs.obs_output_get_signal_handler(output) obs.signal_handler_disconnect(signal_handler, 'start', recording_start_handler) if not is_being_recorded: obs.signal_handler_disconnect(signal_handler, 'stop', recording_stopped_handler) logger.debug(f'cached_settings: {cached_settings}')
def script_load(settings): """ * Sets up triggers on obs events (such as start recording and stop recording) * Creates pipe. Pipe is immutable handle, which never changes after initialization * Calls init_client_seeker() to find a client """ log_threadsafe(obs.LOG_DEBUG, 'Plugin loaded') recording_signal_handler = obs.obs_output_get_signal_handler(obs.obs_frontend_get_recording_output()) obs.signal_handler_connect(recording_signal_handler, "start", trigger_recording_started) obs.signal_handler_connect(recording_signal_handler, "stop", trigger_recording_stopped) global pipe pipe = win32pipe.CreateNamedPipe( r'\\.\pipe\%s' % pipe_name(), win32pipe.PIPE_ACCESS_DUPLEX, win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_READMODE_MESSAGE | win32pipe.PIPE_WAIT, 1, 65536, 65536, 0, None) #have_client_to_speak_with = False #It is the default value, but it must be intact init_client_seeker()
def create_muted_callback(sn): global callback_name if sn is None or sn == callback_name: return False # source hasn't changed or callback is already set if callback_name is not None: remove_muted_callback(callback_name) source = obs.obs_get_source_by_name(sn) if source is None: if sources_loaded: # don't print if sources are still loading dprint("ERROR: Could not create callback for", sn) return False handler = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(handler, "mute", mute_callback) callback_name = sn # save name for future reference dprint('Added callback for "{:s}"'.format(obs.obs_source_get_name(source))) obs.obs_source_release(source) return True
def script_load(settings): global dispatcher sh = obs.obs_get_signal_handler() obs.signal_handler_connect(sh, "source_activate", source_activated)
def script_load(settings): script_update(settings) sig = obs.obs_get_signal_handler() obs.signal_handler_connect(sig, "source_activate", source_activated) obs.signal_handler_connect(sig, "source_deactivate", source_deactivated)
def script_load(settings): sh = obs.obs_get_signal_handler() obs.signal_handler_connect(sh, 'source_activate', enabled) obs.signal_handler_connect(sh, 'source_deactivate', disabled)
def connect_cur_scene(): source = obs.obs_frontend_get_current_scene() sh = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(sh, "item_add", callback) obs.obs_source_release(source)
src_volume = obspython.obs_source_get_volume(src_obj) client.send_message(f"/obs/audio/label/num/{i+1}/visible", 1) client.send_message(f"/obs/audio/label/num/{i+1}", src_name) client.send_message(f"/obs/audio/fader/num/{i+1}/visible", 1) client.send_message(f"/obs/audio/fader/num/{i+1}", src_volume**(1. / 3)) # +======== OBS CALLBACKS ========+ def on_source_create_callback(calldata): refresh_scenes() refresh_audio_faders() signal_handler = obspython.obs_get_signal_handler() obspython.signal_handler_connect(signal_handler, "source_create", on_source_create_callback) # +======== OSC HANDLERS ========+ def scene_handler(address, *args): print(f"{address}: {args}") control, id_type, i_str = address.split("/")[3:6] if control == "button": i = int(i_str) - 1 scn = obspython.obs_frontend_get_scenes()[i] obspython.obs_frontend_set_current_scene(scn) def audio_handler(address, *args): global AUDIO_SOURCES
def script_load(settings): handler = obs.obs_output_get_signal_handler( obs.obs_frontend_get_recording_output()) obs.signal_handler_connect(handler, "start", cb_recording("start")) obs.signal_handler_connect(handler, "stop", cb_recording("stop"))
def create_match_video_output(): global output, output_video_encoder, output_audio_encoder print(f'Creating match video OBS output') if output: print(f'WARNING: Match video OBS output already exists') print() return # create output for match video files output_settings = obs.obs_data_create() obs.obs_data_set_bool(output_settings, 'allow_overwrite', True) output = obs.obs_output_create('ffmpeg_muxer', 'match_file_output', output_settings, None) obs.obs_data_release(output_settings) if not output: print(f'ERROR: Could not create match video output') print() return # create output video encoder for match video files output_video_settings = obs.obs_data_create() obs.obs_data_set_string(output_video_settings, 'rate_control', 'CBR') obs.obs_data_set_int(output_video_settings, 'bitrate', obs.obs_data_get_int(settings, 'video_bitrate')) output_video_encoder = obs.obs_video_encoder_create( obs.obs_data_get_string(settings, 'video_encoder'), 'match_video_encoder', output_video_settings, None) obs.obs_data_release(output_video_settings) if not output_video_encoder: print(f'ERROR: Could not create match video encoder') destroy_match_video_output() return if not obs.obs_encoder_get_codec(output_video_encoder): print(f'ERROR: Invalid codec for match video encoder') destroy_match_video_output() return obs.obs_encoder_set_video(output_video_encoder, obs.obs_get_video()) if not obs.obs_encoder_video(output_video_encoder): print(f'ERROR: Could not set video handler') destroy_match_video_output() return obs.obs_output_set_video_encoder(output, output_video_encoder) if not obs.obs_output_get_video_encoder(output): print(f'ERROR: Could not set video encoder to output') destroy_match_video_output() return # create output audio encoder for match video files output_audio_settings = obs.obs_data_create() obs.obs_data_set_string(output_audio_settings, 'rate_control', 'CBR') obs.obs_data_set_int(output_audio_settings, 'bitrate', obs.obs_data_get_int(settings, 'audio_bitrate')) output_audio_encoder = obs.obs_audio_encoder_create( obs.obs_data_get_string(settings, 'audio_encoder'), 'match_audio_encoder', output_audio_settings, 0, None) obs.obs_data_release(output_audio_settings) if not output_audio_encoder: print(f'ERROR: Could not create match audio encoder') destroy_match_video_output() return if not obs.obs_encoder_get_codec(output_audio_encoder): print(f'ERROR: Invalid codec for match audio encoder') destroy_match_video_output() return obs.obs_encoder_set_audio(output_audio_encoder, obs.obs_get_audio()) if not obs.obs_encoder_audio(output_audio_encoder): print(f'ERROR: Could not set audio handler') destroy_match_video_output() return obs.obs_output_set_audio_encoder(output, output_audio_encoder, 0) if not obs.obs_output_get_audio_encoder(output, 0): print(f'ERROR: Could not set audio encoder to output') destroy_match_video_output() return # set handler for output signals handler = obs.obs_output_get_signal_handler(output) obs.signal_handler_connect(handler, 'stop', stop_recording_action) print()