ぱにぱにぱにぱ

自分が考えた構築紹介を中心に、大会とかオフ会の感想とか書いたりします。

【Python】PythonでOBSを遠隔操作する方法と使用例【OBS】

【はじめに】

ぱにぱにツールで使用したOBSをpythonで遠隔操作する方法について解説していきます。
今回は、"obs-websocket-py"を使用します。以下のサイトを参考に作ったのですが、改めて自分が使った部分を解説できたらと思います。
mokerdiary.hatenablog.com
自分はpythonやOBS関連はすべて独学なので、間違っている部分もあるかもしれませんがご容赦ください。

【接続方法】

①オブジェクトの初期化(以下wsはwebsocketのオブジェクトとする)

ws=obsws("localhost",[サーバーポート],[パスワード])

f:id:panipanipanipa:20191111001131p:plain
②接続

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