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
Example #2
0
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)
Example #3
0
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()
Example #4
0
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)
Example #6
0
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)
Example #8
0
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')
Example #10
0
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)
Example #11
0
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)
Example #12
0
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
Example #13
0
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}')
Example #14
0
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()
Example #15
0
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
Example #16
0
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)
Example #18
0
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)
Example #20
0
        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
Example #21
0
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()