ぱにぱにぱにぱ

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

【ぱにぱにツール】OBSのバージョンを28.0に上げると動かなくなる件について

注意

OBSのバージョンを28.xに上げるとぱにぱにツールが動作しなくなります。
ツールの使用を続けたい場合は、以下のような画像が出てもアップデートしないようお願いいたします。

バージョンを上げてしまっても、古いバージョンをインストールしなおすことで再度使えるようになると思います。
※ポートやパスワードは見直してください。

動かなくなる理由

※英語を適当に読んだので間違っている箇所があるかもしれません。
ぱにぱにツールではobswebsocketを使ったツールとOBSの通信を行っています。

今回のOBS28.0ではobs-websocket5.0が標準搭載になります。
obswebsocket5.0では従来のwebsocketから仕様を一新し、より堅牢かつ簡易的にコードが書けるようにしています。
仕様が変わったことにより、今までのソースコードではOBSの操作が一切できなくなり、ツールは動かなくなります。
例えば、接続からスクリーンショットを取るコードで以下のような変化があります。

websocket4.9以前

  • 接続後に識別を行う必要がない
  • リクエストにOBSの機能に紐づくメソッドがあるので、引き数で情報を渡して呼び出す。
ws=obsws("localhost",[サーバーポート],[パスワード])
ws.connect()
ws.call(requests.TakeSourceScreenshot(source, saveToFilePath=os.getcwd()+"\\" + capName, width=1920, height=1080))
    

websocket5.0以降

  • 接続後に識別を行う必要がある
  • リクエストメソッドの引き数の1つ目にOBSの機能の指定を行い、2つ目の引き数にJSON形式で情報を渡す
    await ws.connect()
    await ws.wait_until_identified()
    request = simpleobsws.Request('SaveSourceScreenshot',{"sourceName":"capture1","imageFormat":"jpg","imageFilePath"[画像パス]:,"imageWidth":1920,"imageHeight":1080,"imageCompressionQuality":100})
    ret = await ws.call(request) # Perform the request

ということで両方に対応するための修正も難しく、修正の規模も大きいので剣盾も残り2か月という中で対応は行うつもりはありません。

色々知りたい方へ

OBS28.0のアップデート内容

github.com

API一覧など

github.com

python用のobswebsocket5.0以降の操作用のライブラリ「simpleobsws」について

github.com