Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?
Organization

OKI AIエッジコンピューター「AE2100」に、IPカメラの映像を取り込もう

※この記事は「AE2100 標準コンテナイメージ(OpenVINO無(Ubuntu版))(ファイル名: AE2100_StdContainer_Ubuntu_202009.zip)」を対象としています。

要約

  • この資料は、OKI AI エッジコンピューター「AE2100」向けの設定解説です。
  • ffmpegを使用して、AE2100のUbuntuコンテナ上でIPカメラの映像ストリームを映像ファイルとして保存します。

はじめに

最近では、映像から車両や人物などを認識することをはじめ、様々なAIを用いたアプリが開発されています。
この記事では、AIを用いたアプリに映像を取り込むための第一歩として、ffmpegを使用して、AE2100のUbuntuコンテナ上でIPカメラの映像ストリームを映像ファイルとして保存するまでを行います。

この記事では、下記の順番で説明します。

  • 環境
  • ffmpegダウンロード
  • AE2100のコンテナ設定
  • カメラ設定
  • ffmpeg実行

環境

実行環境は次の図のような構成を前提とします。

図1.png

Windows PCはLAN2のネットワークに接続し、カメラはLAN1のネットワークに接続してください。
Windows PCには事前にTeraTermをインストールしておいてください。
IPカメラはONVIFプロトコルに対応していれば他社製でも使用できますが、ここではHoneywell製IPカメラ HDZP252DI を使用します。
(適宜IPアドレスなどはご使用環境に合わせ読み替えてください。)

ffmpegダウンロード

インターネットにつながっているPCで、ffmpeg 4.3.1をダウンロードします。
https://ffmpeg.org/download.html にて「32-bit and 64-bit for kernel 3.2.0 and above」をクリックしてページ移動します。

・FFmpeg( https://ffmpeg.org/ )WEBページのスクリーンショット
図2.png

下図のように「release: 4.3.1」と記載の場合は「ffmpeg-release-amd64-static.tar.xz」をクリックしてダウンロードします。
「release: 4.3.1」以外であれば「old releases」をクリックして過去のダウンロードページに移動し、「ffmpeg-4.3.1-amd64-static.tar.xz」をダウンロードしてください。

・FFmpeg( https://ffmpeg.org/ )WEBページのスクリーンショット
図3.png

AE2100のコンテナ設定

ubuntuベースコンテナをビルドします。
「AE2100_StdContainer_Ubuntu_202009.zip」を展開したファイル「ae2100_base.tar.gz」を使用します。
docker buildコマンドを実行する際は、Dockerfile が存在するディレクトリで実行し、コマンド行最後の「 . 」が漏れないようにご注意ください。

# tar xvfz ae2100_base.tar.gz
ae2100_base/
…
(省略)
…
ae2100_base/Dockerfile

# cd ae2100_base
# docker build -t ubuntu:ae2100_base .
…
(省略)
…
Successfully built xxxxxxxxxxxx
Successfully tagged ubuntu:ae2100_base

# cd ../

ffmpegの実行に必要なファイルをAE2100に転送して解凍します。
事前にダウンロードしていたffmpeg 4.3.1のファイルを、AE2100の任意のディレクトリに転送します。
転送完了後に解凍コマンドを実行します。

# tar Jxvf ffmpeg-release-amd64-static.tar.xz
ffmpeg-4.3.1-amd64-static/
ffmpeg-4.3.1-amd64-static/GPLv3.txt
…
(省略)

ベースコンテナにffmpegを追加したイメージファイルを作成するため、Dockerfileを作成します。
Dockerfileには下記を記載します。

FROM ubuntu:ae2100_base
COPY ffmpeg-4.3.1-amd64-static/ /home/ffmpeg-4.3.1-amd64-static/

コンテナイメージファイルを作成します。
docker buildコマンドを実行する際は、Dockerfile が存在するディレクトリで実行し、コマンド行最後の「 . 」が漏れないようにご注意ください。

# docker build -t ubuntu:ae2100_ffmpeg .

ubuntuコンテナを生成、起動します。

# docker run -dit --name rtsp_test ubuntu:ae2100_ffmpeg /bin/bash

カメラ設定

IPカメラに下記設定をしてから、カメラをLAN1に接続してください。

IPアドレス

カメラのWEB-UI経由でログインして、「ネットワーク設定 > TCP/IP」にて設定してください。

項目 設定内容 備考
モード 静的 DHCPの利用有無をボタンで選択
IPバージョン IPv4
IPアドレス 192.168.1.120
サブネットマスク 255.255.255.0

映像設定

カメラのWEB-UI経由でログインして、「カメラ設定 > ビデオ」のメインストリームにて設定してください。

項目 設定内容
フォーマット化 H.264
スマートコーデック オフ
解像度 1920*1080(1080P)
フレームレート(FPS) 30
ビットレートタイプ VBR
品質 4
ビットレート 4096
Iフレーム間隔 60
SVC 1(off)

ffmpeg実行

動作中コンテナのTerminalに接続します。

# docker exec -it rtsp_test /bin/bash

ffmpegでカメラに接続します。
コマンド実行後30秒ほど経過したら、Ctr + Cでコマンド終了してください。

  • カメラにTCPで接続する場合(-rtsp_transport tcp)
# /home/ffmpeg-4.3.1-amd64-static/ffmpeg -rtsp_transport tcp -i rtsp://user:password@192.168.1.120:554 output_honeywell.mp4
  • カメラにUDPで接続する場合(-rtsp_transport udp)
# /home/ffmpeg-4.3.1-amd64-static/ffmpeg -rtsp_transport udp -i rtsp://user:password@192.168.1.120:554 output_honeywell.mp4

映像ストリームを受信していることが実行結果で確認できます。
また、output_honeywell.mp4ファイルにカメラの映像ストリームが保存されます。
例えば、以下のような結果がコンソールに表示されます。
以下の結果から、カメラ設定どおり解像度が1920x1080, フレームレートが30fpsであることが分かります。

Output #0, mp4, to 'output_honeywell.mp4':
  Metadata:
    title           : Media Server
    encoder         : Lavf58.28.101
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.53.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1

映像ファイルに対してffprobeを使用して、カメラの映像ストリームを正常な映像ファイルとして保存していることを確認します。
以下の結果から、カメラ設定どおり解像度が1920x1080, フレームレートが30fpsであることが分かります。

# /home/ffmpeg-4.3.1-amd64-static/ffprobe output_honeywell.mp4
...
(省略)
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output_honeywell.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : Media Presentation
    encoder         : Lavf58.45.100
  Duration: 00:00:05.17, start: 0.000000, bitrate: 2994 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 2992 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)

まとめ

今回はAE2100のUbuntuコンテナ上でffmpegを使用し、IPカメラの映像ストリームを映像ファイルに保存しました。
ffmpegのオプションを変更すれば任意のアプリに映像を取り込むことができます。
ffmpegとみなさんの作成したアプリケーションを組み合わせて、カメラ映像を活用することもできますので、ぜひお試しください。

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
0
Help us understand the problem. What are the problem?