最近は「IoT(Internet of Things)×セキュリティ」として、防犯カメラが話題だ。近年の防犯カメラはネットワーク機能を備えており、遠隔で操作可能な製品が多く、IoTのデバイスとして注目が集まっている。

 一方で、ネットワーク接続した防犯カメラ(ネットワークカメラ)は必ずしも良い面ばかりではない。カメラをDDoS(Distributed Denial of Service)攻撃の踏み台として利用するマルウエア「Mirai」が話題になったり、世界中のカメラ映像をリアルタイムで見られる「Insecam」が注目されたりしているからだ。

 こうした話題があると「ネットワークカメラは危険」と思われるかもしれない。しかし、マルウエアへの感染や映像漏洩は、一部メーカーの認証の仕組みや、利用者が適切にパスワードを設定していないことに原因がある場合が多い。近年のきちんとした製品は、ユーザーが自身でパスワードを適切に設定しないと利用できないようになっている。

ネットワークカメラはNode.jsで操作できる

 今回は、このネットワークカメラをNode.jsで操作してみよう。ネットワークカメラの通信プロトコルは、すでに標準化されている。特に業務用のネットワークカメラには「ONVIF(Open Network Video Interface Forum)」と呼ばれる標準化団体で策定されたプロトコルが組み込まれており、マルチベンダーの監視システムを構築できるようになっている。近年は家庭用でもONVIFに対応した製品が出ている。

 ONVIFはSOAPベースのプロトコルで、対象のネットワークカメラに対して、各種コマンドを送信する。カメラ映像は、RTP(Real-time Transport Protocol)を使ってストリーミング形式で受信可能だ。やや高価だが、「PTZ(パン・チルト・ズーム)」に対応した製品もある。パン、チルト、ズームはカメラの動きを指す。PTZ対応製品であれば、ONVIFを使って、遠隔でカメラの向きを変えたりズームイン/アウトができるようになる。

ネットワークカメラの例
ネットワークカメラの例
[画像のクリックで拡大表示]