i-PRO の監視カメラ i-PRO mini (WV-S7130W) を入手したので、RTSP(H.264/H.265) で映像取得して遊んでみます。
RTSP (Real Time Streaming Protocol) とは、IETF において標準化された映像(ビデオ)および音声(オーディオ)などのストリーミングデータを制御するためのプロトコルです。1998年に最初の版が "RFC 2326" として、バージョン2.0が2016年に "RFC 7826" として標準化されました。
本ページでは、i-PRO カメラとPCを RTSP により接続してPC画面へ表示するプログラムを c++ (Visual Studio) で作成する例を紹介します。とても短いプログラムで i-PRO カメラの映像を見ることができます。動作確認は i-PRO mini (WV-S7130)、モジュールカメラ(AIスターターキット)を使って行いましたが、ほとんどの i-PRO カメラでそのまま利用できるはずです。ぜひお試しください。
Python の記事は こちら を参照ください。
[動画] RTSP でPCと i-PRO カメラを接続して映像表示した様子
"i-PRO mini" 紹介:
"モジュールカメラ" 紹介:
カメラ初期設定についてはカメラ毎の取扱説明書をご確認ください。
カメラのIPアドレスを確認・設定できる下記ツールを事前に入手しておくと便利です。
RTSP で接続するための表記を以下に記載します。
「ネットワークカメラCGIコマンドインターフェース仕様書 統合版」[1] で下記に記載されている情報を元に加筆などしています。
| ストリーム(1) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1 |
| ストリーム(2) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2 |
| ストリーム(3) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_3 |
| ストリーム(4) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_4 |
(例) rtsp://admin:password@192.168.0.10/MediaInput/stream_1
補足: カメラ側の映像圧縮方式設定が H.264/H.265 のいずれの場合も上記で接続できました。
| ストリーム(1) Ch1 (Camera1)/ |
rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1 rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1/ch_1 |
| ストリーム(2) Ch1 (Camera1)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2 rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2/ch_1 |
| ストリーム(1) Ch2 (Camera2)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1/ch_2 |
| ストリーム(2) Ch2 (Camera2)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2/ch_2 |
| ストリーム(1) Ch3 (Camera3)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1/ch_3 |
| ストリーム(2) Ch3 (Camera3)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2/ch_3 |
| ストリーム(1) Ch4 (Camera4)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_1/ch_4 |
| ストリーム(2) Ch4 (Camera4)/ | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/stream_2/ch_4 |
| ストリーム(1) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/h264/stream_1 |
| ストリーム(2) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/h264/stream_2 |
| ストリーム(3) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/h264/stream_3 |
| ストリーム(4) | rtsp://<user-id>:<user-password>@<カメラのIPアドレス>/MediaInput/h264/stream_4 |
(例) rtsp://admin:password@192.168.0.10/MediaInput/h264/stream_1
Linux の c++ と OpenCV を使って、PC と i-PRO カメラを RTSP(H.264/H.265) で接続して映像表示してみます。
| 開発環境 : | GNU build-essensial CMake |
9.4.0 12.8 3.16.3 |
| ライブラリ : | OpenCV | 4.6.0 |
| OS : | ubuntu | 20.04 LTS |
以下のコマンドを実施して環境を準備します。
sudo apt update -y && sudo apt upgrade -y sudo apt install build-essential libopencv-dev cmake -y sudo apt update -y && sudo apt upgrade -y
サンプルプログラムのソースコードを以下に示します。
[プログラムソース "opencv_rtsp.cpp"]
/*
======================================================================================
[Abstract]
Try connecting to an i-PRO camera with RTSP.
RTSP で i-PRO カメラと接続してみる
[Details]
Let's try first.
まずはやってみる
[Library install]
sudo apt update -y && sudo apt upgrade -y
sudo apt install build-essential libopencv-dev cmake -y
sudo apt update -y && sudo apt upgrade -y
======================================================================================
*/
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/utility.hpp>
const std::string user_id = "user_id"; // Change to match your camera setting
const std::string user_pw = "user_pw"; // Change to match your camera setting
const std::string host = "192.168.0.10"; // Change to match your camera setting
const std::string winname = "VIDEO"; // Window title
const std::string url = "rtsp://" + user_id + ":" + user_pw + "@" + host + "/MediaInput/stream_1";
int main(int argc, const char* argv[])
{
cv::VideoCapture cap(url);
cv::Mat frame;
char ret;
while (true) {
cap >> frame;
if (frame.empty()) {
break;
}
// Please modify the value to fit your PC screen size.
resize(frame, frame, cv::Size(), 0.5, 0.5); // Setting by magnification.
// Display video.
cv::imshow(winname, frame);
ret = (char)cv::waitKey(1); // necessary to display the video by cv::imshow().
// Press the "q" key to finish.
if (ret == 'q') {
break;
}
}
cap.release();
cv::destroyAllWindows();
return EXIT_SUCCESS;
}
ビルドにおいて環境依存を極力するなくするため、以下の手順でビルドします。
ソースコード(opencv_rtsp.cpp)と同じディレクトリに以下のように中身が書かれたCMakeLists.txtを配置してください。
CMake の知識がある方は、内容をカスタマイズしてお使いください。
["CMakeLists.txt"]
# 変数SOURCE_CORDEを宣言し、ソースコードのファイル名の拡張子無くした値を入れる。
# cmake -D SOURCE_CODE=(ソース名)で上書き可
set(SOURCE_CODE opencv_rtsp CACHE NAME "Target object name")
# CMakeの最低バージョンを記述
cmake_minimum_required(VERSION 2.8)
# ソリューション名を指定
project( ${SOURCE_CODE} )
# OpenCVのパッケージを探す
find_package( OpenCV REQUIRED )
#ヘッダファイルのパスを指定
include_directories( ${OpenCV_INCLUDE_DIRS} )
# 実行ファイル名とソース指定(ここではソースと同じ名前の実行ファイルを作ります)
add_executable( ${SOURCE_CODE} ${SOURCE_CODE}.cpp )
#リンク先のライブラリを指定
target_link_libraries( ${SOURCE_CODE} ${OpenCV_LIBS} )
ビルド環境を作成してアプリケーションを構築するため、以下のコマンドを実施します。
mkdir build && cd build cmake .. make
これにより、buildディレクトリに[opencv_rtsp]という実行ファイルができましたので、以下のようにコマンドを実施すればアプリケーションが実施されます
./opencv_rtsp
ソースコードの変更をする場合は、すでにビルド環境ができていますので、buildディレクトリで以下のようにすれば更新が可能です。
ライブラリを追加する場合は CMakeLists.txtの追記を行い、build ディレクトリを削除してcmakeをやり直してください。
make clean make
上記プログラムを動かした様子を動画で示します。
こんなに簡単なプログラムでとても快適な映像表示を実現することができました。
[動画] RTSP でPCと i-PRO カメラを接続して映像表示してみた様子
本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。
| 2025/11/17 | - | 「[1] ネットワークカメラCGIコマンドインターフェース仕様書」 リンク先を更新, | 木下英俊 |
| 2023/3/22 | - | 新規作成, | 木下英俊 |