|
| 1 | +# 匯入模組 obspython |
| 2 | +import obspython as obs |
| 3 | + |
| 4 | +def test(props, prop): |
| 5 | + # 建立一個名稱為 my_text 的文字(GDI+)來源,並將字串 "今天天氣不錯!" 設定為文字 |
| 6 | + settings = obs.obs_data_create_from_json('{"text":"今天天氣不錯!"}') |
| 7 | + source = obs.obs_source_create('text_gdiplus', 'my_text', settings, None) |
| 8 | + |
| 9 | + # 釋放來源物件和來源設定物件 |
| 10 | + obs.obs_source_release(source) |
| 11 | + obs.obs_data_release(settings) |
| 12 | + |
| 13 | + # 複製名稱為 Welcome 的來源,並指定新名稱 Bye |
| 14 | + welcome = obs.obs_get_source_by_name('Welcome') |
| 15 | + bye = obs.obs_source_duplicate(welcome, 'Bye', False) |
| 16 | + |
| 17 | + # 通過 Welcome 的來源設定物件,修改其對應的文字 |
| 18 | + settings = obs.obs_source_get_settings(welcome) |
| 19 | + obs.obs_data_set_string(settings, 'text', '你好,歡迎!') |
| 20 | + obs.obs_source_update(welcome, settings) |
| 21 | + # 釋放來源設定物件 |
| 22 | + obs.obs_data_release(settings) |
| 23 | + |
| 24 | + # 顯示 Weclome 來源的大小 |
| 25 | + width = obs.obs_source_get_width(welcome) |
| 26 | + height = obs.obs_source_get_height(welcome) |
| 27 | + obs.script_log(obs.LOG_INFO, f"Welcome 的大小 {width}x{height}") |
| 28 | + |
| 29 | + # 顯示 Weclome 來源的來源類型識別碼和 UUID |
| 30 | + v_id = obs.obs_source_get_id(welcome) |
| 31 | + id = obs.obs_source_get_unversioned_id(welcome) |
| 32 | + obs.script_log(obs.LOG_INFO, f"Welcome 的 id {v_id} {id}") |
| 33 | + uuid = obs.obs_source_get_uuid(welcome) |
| 34 | + obs.script_log(obs.LOG_INFO, f"Welcome 的 uuid {uuid}") |
| 35 | + |
| 36 | + # 釋放來源 Welcome 和 Bye |
| 37 | + obs.obs_source_release(welcome) |
| 38 | + obs.obs_source_release(bye) |
| 39 | + |
| 40 | + # 如果存在名稱為 Groups 的來源,則將其改名為 Group |
| 41 | + groups = obs.obs_get_source_by_name('Groups') |
| 42 | + if groups: |
| 43 | + obs.obs_source_set_name(groups, 'Group') |
| 44 | + obs.obs_source_release(groups) |
| 45 | + |
| 46 | + # 顯示 Group 來源的類型,並判斷是否為群組 |
| 47 | + group = obs.obs_get_source_by_name('Group') |
| 48 | + group_type = obs.obs_source_get_type(group) |
| 49 | + obs.script_log(obs.LOG_INFO, f"Group 的類型 {group_type},等於 OBS_SOURCE_TYPE_SCENE?{group_type == obs.OBS_SOURCE_TYPE_SCENE}") |
| 50 | + obs.script_log(obs.LOG_INFO, f"Group 是群組?{obs.obs_source_is_group(group)}") |
| 51 | + obs.obs_source_release(group) |
| 52 | + |
| 53 | + # 來源 Screen 如果存在,則將其移除 |
| 54 | + screen = obs.obs_get_source_by_name('Screen') |
| 55 | + if screen: |
| 56 | + obs.obs_source_remove(screen) |
| 57 | + obs.script_log(obs.LOG_INFO, f"Screen 被移除?{obs.obs_source_removed(screen)}") |
| 58 | + obs.obs_source_release(screen) |
| 59 | + |
| 60 | + # 判斷來源 Video 的輸出旗標 |
| 61 | + video = obs.obs_get_source_by_name('Video') |
| 62 | + flags = obs.obs_source_get_output_flags(video) |
| 63 | + obs.script_log(obs.LOG_INFO, f"Video 具有視訊功能?{flags & obs.OBS_SOURCE_VIDEO == obs.OBS_SOURCE_VIDEO}") |
| 64 | + obs.script_log(obs.LOG_INFO, f"Video 具有音訊功能?{flags & obs.OBS_SOURCE_AUDIO == obs.OBS_SOURCE_AUDIO}") |
| 65 | + obs.obs_source_release(video) |
| 66 | + |
| 67 | +# 為腳本新增一個用於測試的按鈕,回呼函式為 test |
| 68 | +def script_properties(): |
| 69 | + props = obs.obs_properties_create() |
| 70 | + obs.obs_properties_add_button(props, 'test', '測試', test) |
| 71 | + return props |
| 72 | + |
| 73 | + |
| 74 | +# def script_update(settings): |
| 75 | +# # 複製名稱為 Welcome 的來源,並指定新名稱 Bye |
| 76 | +# welcome = obs.obs_get_source_by_name('Welcome') |
| 77 | +# bye = obs.obs_source_duplicate(welcome, 'Bye', False) |
| 78 | + |
| 79 | +# # 通過 Welcome 的來源設定物件,修改其對應的文字 |
| 80 | +# settings = obs.obs_source_get_settings(welcome) |
| 81 | +# obs.obs_data_set_string(settings, 'text', '你好,歡迎!') |
| 82 | +# obs.obs_source_update(welcome, settings) |
| 83 | +# # 釋放來源設定物件 |
| 84 | +# obs.obs_data_release(settings) |
| 85 | + |
| 86 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_width(welcome)} {obs.obs_source_get_width(welcome)}") |
| 87 | + |
| 88 | +# # 釋放來源 Welcome 和 Bye |
| 89 | +# obs.obs_source_release(welcome) |
| 90 | +# obs.obs_source_release(bye) |
| 91 | + |
| 92 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_display_name('text_gdiplus')}") |
| 93 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_display_name('color_filter')}") |
| 94 | + |
| 95 | +# o = obs.obs_source_create_private("text_gdiplus", "my_test", None) |
| 96 | +# obs.script_log(obs.LOG_INFO, f" my_test {obs.obs_source_is_hidden(o)}") |
| 97 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_name(o)} {obs.obs_source_removed(o)}") |
| 98 | +# obs.obs_source_release(o) |
| 99 | +# o2 = obs.obs_source_create("text_gdiplus", "my_test", None, None) |
| 100 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_name(o2)}") |
| 101 | + |
| 102 | +# o = obs.obs_get_source_by_name('圖片') |
| 103 | +# if o: |
| 104 | +# # obs.script_log(obs.LOG_INFO, f"{obs.obs_get_source_by_name('圖片')}") |
| 105 | +# o1 = obs.obs_source_duplicate(o, 'None', False) |
| 106 | +# obs.obs_source_release(o) |
| 107 | +# obs.obs_source_release(o1) |
| 108 | + |
| 109 | +# v = obs.obs_source_is_hidden(o) |
| 110 | +# obs.obs_source_set_hidden(o, True) |
| 111 | +# obs.script_log(obs.LOG_INFO, f"hidden {v}") |
| 112 | + |
| 113 | +# o = obs.obs_get_source_by_name('場景 2 2') |
| 114 | +# # o1 = obs.obs_get_source_by_name('Welcome') |
| 115 | +# if o: |
| 116 | +# # # obs.obs_source_remove(o) |
| 117 | +# # # obs.script_log(obs.LOG_INFO, f"{obs.obs_source_removed(o1)}") |
| 118 | +# # # obs.obs_source_release(o) |
| 119 | +# # abc = obs.obs_source_get_id(o) |
| 120 | +# # obs.script_log(obs.LOG_INFO, f"{obs.obs_source_get_output_flags(o)}x{abc}x{obs.obs_get_source_output_flags(abc)}") |
| 121 | +# # obs.script_log(obs.LOG_INFO, f"{obs.OBS_SOURCE_TYPE_INPUT}x{obs.OBS_SOURCE_TYPE_FILTER}x{obs.OBS_SOURCE_TYPE_TRANSITION}x{obs.OBS_SOURCE_TYPE_SCENE}") |
| 122 | +# # # obs.obs_source_set_name(o, '場景 2') |
| 123 | +# s = obs.obs_source_get_settings(o) |
| 124 | +# json = obs.obs_data_get_json(s) |
| 125 | +# obs.script_log(obs.LOG_INFO, f"{json}") |
| 126 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_data_get_string(s, 'text')}") |
| 127 | + |
| 128 | +# obs.obs_data_set_string(s, 'text', '你好哦!') |
| 129 | +# obs.obs_source_update(o, s) |
| 130 | +# obs.obs_data_release(s) |
| 131 | +# obs.obs_data_release(s) |
| 132 | +# obs.script_log(obs.LOG_INFO, f"text re={obs.obs_data_get_string(s, 'text')}") |
| 133 | +# obs.obs_source_release(o) |
| 134 | + |
| 135 | +# o = obs.obs_get_source_by_name('場景 2 2') |
| 136 | +# # o1 = obs.obs_get_source_by_name('Welcome') |
| 137 | +# if o: |
| 138 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_showing(o)}") |
| 139 | +# obs.obs_source_dec_showing(o) |
| 140 | +# obs.obs_source_set_enabled(o, True) |
| 141 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_showing(o)}") |
| 142 | +# obs.obs_source_release(o) |
| 143 | + |
| 144 | +# d4 = obs.obs_get_source_defaults('text_gdiplus') |
| 145 | +# obs.obs_data_release(d4) |
| 146 | +# obs.obs_data_release(d4) |
| 147 | +# d4 = obs.obs_get_source_defaults('text_gdiplus') |
| 148 | +# obs.script_log(obs.LOG_INFO, obs.obs_data_get_string(d4, 'align')) |
| 149 | + |
| 150 | +# d = obs.obs_data_create() |
| 151 | + |
| 152 | +# do = obs.obs_data_array_create() |
| 153 | + |
| 154 | +# obs.obs_data_set_default_array(d, "player", do) |
| 155 | + |
| 156 | +# i = obs.obs_data_create() |
| 157 | +# obs.obs_data_array_push_back(do, i) |
| 158 | +# obs.obs_data_release(i) |
| 159 | +# obs.obs_data_array_release(do) |
| 160 | + |
| 161 | +# do = obs.obs_data_get_default_array(d, "player") |
| 162 | +# # do = obs.obs_data_get_default_array(d, "player") |
| 163 | +# obs.script_log(obs.LOG_INFO, f"count def={obs.obs_data_array_count(do)}") |
| 164 | +# obs.obs_data_array_release(do) |
| 165 | +# # obs.obs_data_array_release(do) |
| 166 | +# do = obs.obs_data_get_default_array(d, "player") |
| 167 | +# obs.script_log(obs.LOG_INFO, f"count released def={obs.obs_data_array_count(do)}") |
| 168 | + |
| 169 | +# de = obs.obs_data_get_defaults(d) |
| 170 | + |
| 171 | +# obs.script_log(obs.LOG_INFO, f"name def={obs.obs_data_get_string(de, 'name')}") |
| 172 | +# obs.script_log(obs.LOG_INFO, f"age def={obs.obs_data_get_string(de, 'age')}") |
| 173 | + |
| 174 | +# # obs.obs_data_release(de) |
| 175 | +# obs.obs_data_release(d) |
| 176 | + |
| 177 | +# obs.script_log(obs.LOG_INFO, f"name def={obs.obs_data_get_string(d, 'name')}") |
| 178 | +# obs.script_log(obs.LOG_INFO, f"age def={obs.obs_data_get_string(d, 'age')}") |
| 179 | + |
| 180 | +# def call(p, c, pa): |
| 181 | +# pass |
| 182 | + |
| 183 | +# o = obs.obs_get_source_by_name('場景 2 2') |
| 184 | +# # o1 = obs.obs_get_source_by_name('Welcome') |
| 185 | +# if o: |
| 186 | +# obs.script_log(obs.LOG_INFO, f"{obs.obs_source_showing(o)}") |
| 187 | +# # c = obs.obs_source_create("color_key_filter", "my_test111", None, None) |
| 188 | +# # obs.obs_source_add_active_child(o, c) |
| 189 | +# # obs.obs_source_release(c) |
| 190 | +# props = obs.obs_source_properties(o) |
| 191 | +# p = obs.obs_properties_first(props) |
| 192 | +# obs.obs_property_set_enabled(p, False) |
| 193 | +# obs.obs_source_update_properties(o) |
| 194 | +# obs.obs_source_release(o) |
0 commit comments