PythonとRTSPでネットワークカメラのストリーミング動画を取得する

ある施設の人数カウントを行うためにネットワークカメラ(TP-Link Tapo C210)を購入しました。

本投稿ではPythonを利用してネットワークカメラのストリーミング動画を取得する方法を紹介します。

購入したカメラ

今回購入したカメラはTP-Link Tapo C210という機種になります。

ただし本投稿で紹介する方法は、後述するRTSP対応カメラであれば同様に進められるはずです。

ネットワークカメラの選定にも興味がある方は以下の記事もご覧いただけると嬉しいです。

システムと組み合わせて人数カウントができるネットワークカメラの選定

事前知識の簡単な紹介

RTSPとは

今回はPythonからネットワークカメラのストリーミング動画を取得するために、RTSPというものを利用します。

RTSPとは、映像・音声のリアルタイムなストリーミング配信を制御する為のプロトコル(ルール)になります。

RTSP対応のカメラを選ぶことで、外部のアプリやプログラムからカメラのストリーミング動画を取得できるようになります。

ちなみにRTSPはReal Time Streaming Protocolの略になります。

ストリーミング動画の取得手順

カメラ(TP-Link Tapo C210)の設定

まずはRTSPに必要なユーザーネームとパスワードを設定します。

Tapo C210については公式サイトにて設定方法が紹介されていますので、そちらを参考に進めます。

Tapoを使用したRTSPライブストリーミングの利用方法

Tapo以外のカメラをご利用の方は、各メーカーのページを探してみてください。

モジュールのインストール

インストールするモジュールは以下になります。

> python -m venv env
(env) > pip install rtsp
(env) > pip install --upgrade onvif_zeep

ソースコード

ソースコードはこちらです。

import rtsp
import time


def get_tapo_cam_frame():
    # RTSP params
    USER = 'username'
    PASS = 'password'
    IPADDR = '192.168.0.0'
    RTSP_PORT = '554'
    STREAM = 'stream1'  # stream1:1080p, 2:stream2:360p

    # RTSP setup
    rtsp_url = f'rtsp://{USER}:{PASS}@{IPADDR}:{RTSP_PORT}/{STREAM}'
    client = rtsp.Client(rtsp_server_uri=rtsp_url, verbose=True)

    time.sleep(1)

    # get frame
    frame = client.read()
    return frame


get_tapo_cam_frame()
設定項目

USER, PASS, IPADDRの部分は実際の値を入力してください。

出力結果

上記プログラムの出力はこちらになります。

ソースコードのテスト実行はjupyter notebook上で行っております。

上記の画像におけるカメラと被写体の位置関係はこのような形で撮っています。

まとめ

今回はPythonとRTSPを用いて、ネットワークカメラのストリーミング動画を取得しました。

ご意見やご質問がありましたらお気軽によろしくお願いします。コメントお待ちしております!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA