31
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Python Client for ONVIF Camera のご紹介

はじめに

Amazon で買ったWiFi 付きの IPCamera を Raspberry Pi から操作(録画、3G回線経由で nginx への中継、etc)をしています。
IPCamera の rtsp server をインターネットに直接晒すのではなく、IPCamera は RPi 上の LAN に隔離して、逆に Internet 上の Nginx に movie を push するようなトポロジで IPCamera を乗っ取られるリスクを下げるのが目的です
具体的には こんな 事をやってます

カメラの設定に Python Client for ONVIF Cameraが便利でしたので、その旨ご報告させていただきます次第です

install

READMEを見ると pip と git clone & setup.py が紹介されていますが、私の場合、pip install だとなぜか devicemgmt.wsdl がインストールされませんでした(なんでだろ)
git clone & setup.py だと devicemgmt.wsdl も無事にインストールされました

git clone git@github.com:quatanium/python-onvif.git
cd python-onvif && python setup.py install

サンプルプログラム

READMEに、カメラの時刻情報を取得したり設定したりする例がでています。

ネットワークカメラの時刻設定なんて、NTP で勝手にやってくれるのにその設定なんて現実にすることあるの?と、賢明な諸兄諸姉はお考えになるかもしれません

はじめに、でも書いたとおり IPCAM がインターネットに直に繋げず、RPi を AP として繋げ、IPCAM からのパケットは RPi でブロックする代わりに RPi から外に

IPCAM の Video Source -> RPi の ffmpeg -> Nginx RTSP reverse proxy

とすると外部から IPCAM への侵入が遮断できて少し安心です

その代わりに、IPCAM の NTP client が時刻情報をとれず、時計が狂うので、このサンプルは私の場合は実用的でございました

pros

onvif を含めて SOAP って全く簡単なサービスの呼び出しだけでも xml を用意しないといけないのがお役所の窓口みたいで鬱陶しくて嫌だというか、なんで今時 json じゃなくて SOAP なんだと腹が立ったりもするのですが、このライブラリはなんと!例えば

time_params = mycam.devicemgmt.create_type('SetSystemDateAndTime')

みたいにすると、サービス(ここでは SetSystemDateAndTime)を呼び出すのに必要なパラメタの xml のひな形を全部用意してくれるので凄く嬉しいです!ナントイフホガラカサ!

カメラ設定の例

KNEWMART のONVIF720HD IP Camera で、ONVIF の 5.5.5 Modify a video encoder configuration をやってみた例などを、自分の為の簡単なメモで恐縮ではございますが
こちら残させて頂きましたので、僭越ではございますが僥倖にも諸兄諸姉のご参考になる事がございましたら至福の至りです。

この例の中で onvif のアカウントが、一般に良くないとされるデフォルトのままなので良識に富まれた諸兄諸姉におかれましてはギョッとされますかもしれませんが、我が家のIPCAMは前述のとおりRPi を挟んでインターネットからのコマンドを遮断してますのでご安心していただければ幸いでございます ^^/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
31
Help us understand the problem. What are the problem?