OBSをPythonから制御してみる
はじめに
最近Youtubeで配信を始めて、配信ソフトとしてOBSを使用しているまりもです。
こちらのチャンネルで配信していますので、見に来てもらえると嬉しいです。
配信している時に、PythonからOBSを触れたら便利だなぁと思うことが多々あり、
ある程度触れるようになったので、備忘録としてまとめておきます。
準備
obs-websocketのインストール
まず、OBSを外部から制御する上で欠かせないobs-websocket(プラグイン)を導入します。
これを導入することにより、WebSocketを用いた通信でOBSの様々な制御が行えるようになります。
私が導入した時点ではver4.9.1が最新リリースで、ver5.0.0-alpha3がプレリリースとしての最新でしたが、基本的に最新リリース(Latest)のもの(ここでは4.9.1)を導入してください。
※プレリリース版で実装された内容によってはobs-websocket-pyと嚙み合わずエラーになります。
obs-websocket-pyのインストール
インストールはいつものやつです。
pip install obs-websocket-py
OBSのWebSocketサーバー設定
obs-websocketのインストールが完了していると、OBSでツール>WebSocketサーバー設定という項目が追加されているはずです。
こちらからサーバーポートとパスワードを設定し、OKボタンを押下します。
ドキュメント
こちらを見るのが一番だと思います。
サンプル
公式サンプル(シーン変更)の他に使いそうな内容のサンプルをあげておきます。
気が向いた時に徐々に追加していくかもです。
テキスト変更
テキスト(GDI+)のテキスト変更サンプルです。
アクティブシーンのソース名称を用いて、テキストを変更する動きです。
※SetTextGDIPlusPropertiesを使用する方が適切かと思いますが、とりあえずテキスト変更程度なら下記でも動きます。
from obswebsocket import obsws, requests
#テキスト変更関数
def obsTextChange(source_name: str, strtext: str):
ws.call(requests.SetSourceSettings(source_name, {"text": strtext}))
host = "localhost"
port = 4444
password = "設定したパスワード"
ws = obsws(host, port, password)
ws.connect()
obsTextChange("変更したいソース名称", "変更後文字列")
ws.disconnect()
最近のコメント