LoginSignup
1
0

監視カメラの映像をOBSでライブ配信していて、Pythonでシーンを自動切り替えできるようにしてみた

Last updated at Posted at 2023-01-27

はじめに

去年の年末から店舗を運営することになり、遠隔監視ができたらいいな〜と思っていたところ、簡単にできそうだったので試してみました。

使ったもの

基本設定

  • 監視カメラを設置し、レコーダーに接続
  • レコーダのHDMI出力に変換アダプタを接続
  • USBをワークステーションに接続
  • OBSでキャプチャデバイスとして映像を配信

やりたくなったこと

同じ映像がずっと流れるのは少しつまらないかなと思ったので、少し工夫してみたくなりました

  • カメラのレイアウトを変えたシーンをいくつか作ってそれを切り替えながら見れるようにしたい
  • レイアウトに隙間があるので、店舗の告知も入れていきたい

結果、いくつか面白そうなシーンができたので、これを切り替えながら表示したいなと思ったら自動でシーンを切り替える機能が標準ではなかったので、Pythonで10秒おきに自動切り替えできるようにしてみました。

使ったライブラリ

simpleobsws

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())

できた!

監視カメラの映像はこちらから確認できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0