はじめに
去年の年末から店舗を運営することになり、遠隔監視ができたらいいな〜と思っていたところ、簡単にできそうだったので試してみました。
使ったもの
- 監視カメラとレコーダー
- HDMI-USB変換アダプタ
- ワークステーション(DELL Precision 3690)
- OBS
基本設定
- 監視カメラを設置し、レコーダーに接続
- レコーダのHDMI出力に変換アダプタを接続
- USBをワークステーションに接続
- OBSでキャプチャデバイスとして映像を配信
やりたくなったこと
同じ映像がずっと流れるのは少しつまらないかなと思ったので、少し工夫してみたくなりました
- カメラのレイアウトを変えたシーンをいくつか作ってそれを切り替えながら見れるようにしたい
- レイアウトに隙間があるので、店舗の告知も入れていきたい
結果、いくつか面白そうなシーンができたので、これを切り替えながら表示したいなと思ったら自動でシーンを切り替える機能が標準ではなかったので、Pythonで10秒おきに自動切り替えできるようにしてみました。
使ったライブラリ
pip install simpleobsws
作ったスクリプト
switch_scenes.py
#!/usr/bin/env python3
import asyncio
import simpleobsws
import time
# 接続パラメータ
parameters = simpleobsws.IdentificationParameters(ignoreNonFatalRequestChecks = False)
# OBSとの接続設定
ws = simpleobsws.WebSocketClient(url = 'ws://localhost:[your port]', password = '[your password]', identification_parameters = parameters)
async def make_request():
# OBSに接続
await ws.connect()
await ws.wait_until_identified()
# シーンの一覧を取得
request = simpleobsws.Request('GetSceneList')
ret = await ws.call(request)
if ret.ok():
print("Request succeeded! Response data: {}".format(ret.responseData))
# シーンの一覧から切り替え
scenes = ret.responseData['scenes']
while True:
# 各シーンを10秒ごとに切り替える
for s in scenes:
sceneName = s['sceneName']
data = {'sceneName': sceneName}
request = simpleobsws.Request('SetCurrentProgramScene',data)
ret = await ws.call(request)
time.sleep(10)
# OBSと切断
await ws.disconnect()
loop = asyncio.get_event_loop()
loop.run_until_complete(make_request())
できた!
監視カメラの映像はこちらから確認できます。