【2026年版】OBSでソースの表示非表示を自動化する方法

OBS

obsws-python(OBS WebSocket v5準拠)を操作してソースを表示・非表示する方法を解説します。

その他にも知りたい方はコチラの記事を見てください。

前提条件、環境

ソースを表示・非表示するコード

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取得、シーンアイテム有効・無効化の公式ドキュメントは以下にあります。

コメント

タイトルとURLをコピーしました