obs-websocket-py(OBS Websocket v4準拠)を使ってツールを作っていたら、「あれ・・・?obsws-python(OBS WebSocket v5)があるじゃん・・・」と気づいたのでココに情報を残します。
今後はOBS WebSocket v5がメインとなるとのことなので、obs-websocket-py(OBS WebSocket v4準拠)でいろいろ作ったツールをobsws-python(OBS WebSocket v5準拠)に修正していきます。
ここではv4とv5の違いについて触れながら、obsws-pythonの使い方を説明します。
OBS WebSocket v4からきた方は変化点抜粋からどうぞ。
OBS WebSocketとは
OBS WebSocketとは、配信ソフトウェア「OBS Studio」を外部から制御するための拡張機能(プラグイン)です。
通常、OBSの操作はGUI上で行いますが、OBS WebSocketを導入すると WebSocket通信を介して外部プログラムからOBSを操作できるようになります。
OBS WebSocketでできること
PythonやJavaScriptなどのスクリプトから以下のような制御が可能になります。
– 録画や配信の開始・停止を自動化
– シーンの切り替えやソースの変更を外部から実行
– シーンアイテム(テキスト・画像・動画)の表示/非表示を制御
– リプレイバッファの操作
v4とv5の違い
変更点は以下のようです。
OBS WebSocket v5 は v4 から大幅に刷新され、API 名や構造が統一されました。
sceneItemId や inputName を使った厳密な操作が可能になり、機能も大幅に拡張。
その分コードは少し複雑になりますが、より柔軟で正確な制御ができます。
私の場合はOBS WebSocket APIを直接呼び出している作り方なので、以下2点を修正します。
- obsws-pythonに合わせたOBS WebSocket APIの呼び出し方法
- OBS WebSocket v5のレスポンス構造の統一化に伴う取り出し方法
変化点抜粋
ここに辿りついた人はある程度触ったことがある人だと思うので必要そうな情報を抜粋します。
もっと詳細に書いてほしいなどの要望があれば追記・補足します。
APIを直接呼び出す方法を取っているため、obsws-pythonで提供されている機能を使いたい方は公式のGitHubを確認してください。
| やり方 | OBS Websocket v4 | OBS WebSocket v5 |
| インストール | pip install obs-websocket-py | pip install obsws-python |
| インポート | from obswebsocket import obsws | import obsws_python as obsws |
| 接続 | obsws(host,port,password) | obsws.ReqClient(host=host, port=port, password=password) |
| 録画開始 | ws.call(obs_req.StartRecord()) | ws.base_client.req(“StartRecord”) |
| 録画終了 | ws.call(obs_req.StopRecord()) | ws.base_client.req(“StopRecord”) |
| シーンアイテムの有効と無効 | ws.call(obs_req.SetSceneItemEnabled(~) | ws.base_client.req(“SetSceneItemEnabled”,{~}) |
| シーンアイテムの変更 | ws.call(obs_req.SetInputSettings(~)) | ws.base_client.req(“SetInputSettings”,{~}) |
| シーンアイテムの作成 | ws.call(obs_req.CreateInput(~)) | ws.base_client.req(“CreateInput”,{~}) |
| シーンアイテムの削除 | ws.call(obs_req.RemoveSceneItem(~)) | ws.base_client.req(“RemoveSceneItem”,{~}) |
使い方
以下に具体的な使い方を記載しています。


コメント