obsws-python(OBS WebSocket v5準拠)を操作してソースを表示・非表示する方法を解説します。
その他にも知りたい方はコチラの記事を見てください。
前提条件、環境
- OBS:28.0以上
- Python:3.9以上
- obsws-python
- OBS WebSocketの接続設定
ソースを表示・非表示するコード
OBSでソースを表示・非表示するためには、SceneItemIDを指定して行う必要があります。
そのために必要な情報は2つです。
- シーン名:ナニカツクル
- ソース名:テキストメッセージ

上記のシーン名とソース名をもとにソースの表示・非表示するコードは以下になります。
# シーンアイテムIDの取得
res = ws.base_client.req(
"GetSceneItemId",
{
"sceneName": "ナニカツクル", # シーン名を指定
"sourceName": "テキストメッセージ" # ソース名を指定
}
)
scene_item_id = res["responseData"]["sceneItemId"]
# シーンアイテムの有効化
res = ws.base_client.req(
"SetSceneItemEnabled",
{
"sceneName": scene_name, # シーン名を指定
"sceneItemId": scene_item_id, # ソース名を指定
"sceneItemEnabled": True
}
)
# シーンアイテムの無効化
res = ws.base_client.req(
"SetSceneItemEnabled",
{
"sceneName": scene_name, # シーン名を指定
"sceneItemId": scene_item_id, # ソース名を指定
"sceneItemEnabled": False
}
)
表示・非表示のサンプル
OBS WebSocketの接続を含めた一通りのコードは以下となります。
# OBS WebSocketのインポート
import obsws_python as obsws
# OBS接続情報
host = "localhost"
port = 4455
password = "**********"
# シーン名とソース名の指定
scene_name = "ナニカツクル"
source_name = "テキストメッセージ"
offset = None
# OBS WebSocketクライアントの作成
ws = obsws.ReqClient(host=host, port=port, password=password)
# シーンアイテムIDの取得
res = ws.base_client.req(
"GetSceneItemId",
{
"sceneName": scene_name, # シーン名を指定
"sourceName": source_name # ソース名を指定
}
)
scene_item_id = res["responseData"]["sceneItemId"]
# シーンアイテムの有効化
res = ws.base_client.req(
"SetSceneItemEnabled",
{
"sceneName": scene_name, # シーン名を指定
"sceneItemId": scene_item_id, # ソース名を指定
"sceneItemEnabled": True
}
)
# シーンアイテムの無効化
res = ws.base_client.req(
"SetSceneItemEnabled",
{
"sceneName": scene_name, # シーン名を指定
"sceneItemId": scene_item_id, # ソース名を指定
"sceneItemEnabled": False
}
)
# OBSから切断
ws.disconnect()
公式ドキュメント
シーンアイテムID取得、シーンアイテム有効・無効化の公式ドキュメントは以下にあります。




コメント