【はじめに】
ぱにぱにツールで使用したOBSをpythonで遠隔操作する方法について解説していきます。
今回は、"obs-websocket-py"を使用します。以下のサイトを参考に作ったのですが、改めて自分が使った部分を解説できたらと思います。
mokerdiary.hatenablog.com
自分はpythonやOBS関連はすべて独学なので、間違っている部分もあるかもしれませんがご容赦ください。
【接続方法】
①オブジェクトの初期化(以下wsはwebsocketのオブジェクトとする)
ws=obsws("localhost",[サーバーポート],[パスワード])
②接続
ws.connect()
③切断
ws.disconnect()
いわゆるネットワーク系とまったく同じ感覚で接続が可能。(普段自分は使わないからわからないが)
【使用したAPI】
自分が今回使用したAPIは以下の3点。
- SetSceneItemRender
- TakeSourceScreenshot
- SetSourceSettings
EventとRequestで主に2種類あるのですが、自分が使ったのはすべてRequestでした。
Requestは以下のように使用します。
ws.call(request.[使用API])
SetSceneItemRender
OBS上のソースの表示非表示を切り替える。(公式が非推奨)
def changeRender(self,source,render,scene): self.ws.call(requests.SetSceneItemRender(source,render,scene))
source | ソース名 |
render | 表示→True,非表示→False |
scene | シーン名 |
SetSourceSettings
OBS上のソースのプロパティを変更する。
def setOptions(self,sourceName): self.ws.call(requests.SetSourceSettings(sourceName, {"unload": False}))
sourceName | ソース名 |
sourceSettings | ソースの型ごとのオプションの設定 {プロパティの何か:設定内容}で指定する |
今回の場合は、画像の「表示中の画像は読み込まない」のチェックを外しています。
unloadが「表示中の画像は読み込まない」のチェックを示していて、Falseで外しています。
TakeSourceScreenshot
OBS上のソースの画像を取得する。
def takeScreenshot(self,source,capName): self.ws.call(requests.TakeSourceScreenshot(source, saveToFilePath=os.getcwd()+"\\" + capName, width=1920, height=1080))
source | ソース名 |
saveToFilePath | 保存先のパス |
width | 保存する画像の横幅 |
height | 保存する画像の縦幅 |
【最後に】
日本語での使用例が少なかったので記事にしてみました。OBS上でできることはほぼ全部できると思うので、自分のしたいことに合わせて以下のリンクからAPIを調べてみてください。
github.com