[FRDM-IMX95] i.MX 95 ネットワークカメラの導入 (日本語ブログ)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[FRDM-IMX95] i.MX 95 ネットワークカメラの導入 (日本語ブログ)

shigenobukatagi
NXP Employee
NXP Employee
0 0 56

はじめに

FRDM-IMX95ボードとUbuntu PCを使って、ネットワークカメラを実現する簡単な手法をご紹介します。※本記事は、i.MX 95カメラアプリケーションの導入が完了している前提で説明します。

(作業時間:20分) *i.MX 95カメラアプリケーションの導入が完了している前提

shigenobukatagi_1-1776901598471.png

 

目次

 

ネットワークカメラのデモ構成

FRDM-IMX95とUbuntuがインストールされたPCを使って、

  • FRDM-IMX95:カメラ画像 送信側(カメラ本体)
  • Ubuntu PC:カメラ画像 受信側(ビューア)

という構成をとってみます。
送信側、受信側いずれもGstreamerを使うのが簡単です。受信側にUbuntuを使うのもGstreamerが理由です。FRDM-IMX95が2台あれば、送信側、受信側どちらもFRDM-IMX95にしても構わないですね。

 

カメラ画像送信側(FRDM-IMX95)

shigenobukatagi_0-1776917529798.png

4kのカメラ画像をキャプチャし、GPU 2Dで1920x1080にリサイズ、VPUでH.265にエンコード、ネットワークで送信する、という流れをFRDM-IMX95で実施します。ネットワークはEthernetでもWi-Fiでもどちらでも可能です。

 

カメラ画像受信側(Ubuntu PC)

shigenobukatagi_1-1776917563726.png

こちらはネットワークパケットとして受け取ったH.265ストリームをデコードしてディスプレイに表示します。

 

1. Ubuntu PC(受信側)のGstreamerセットアップ

Gstreamerをインストールします。Ubuntuで以下のコマンドを実施ください。

$ sudo apt update
$ sudo apt install \
  gstreamer1.0-tools \
  gstreamer1.0-plugins-base \
  gstreamer1.0-plugins-good \
  gstreamer1.0-plugins-bad \
  gstreamer1.0-libav

次に、Ubuntu PCのIPアドレスを確認しておきます。

$ ifconfig
~~省略~~
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.80.138  netmask 255.255.192.0  broadcast 172.16.127.255

この例では172.16.80.138ですね。このIPアドレスはFRDM-IMX95での設定に使用します。

ここまでできたら、以下のコマンドを実行し送信側からのデータを待ち受けます。

gst-launch-1.0 \
udpsrc port=5000 caps="application/x-rtp,media=(string)video,encoding-name=(string)H265,payload=(int)96" ! \
rtpjitterbuffer latency=10 ! \
rtph265depay ! \
h265parse ! \
avdec_h265 ! \
videoconvert ! \
autovideosink sync=false

なお筆者はUbuntu 24.04を使って検証しています。

 

2. FRDM-IMX95(送信側)のセットアップ

Gstreamerでのカメラを使うための設定はこちらの記事(URLを貼る)をご覧頂ければと思います。
今回は対向先のPCがありますので先ほどUbuntu側で確認したIPアドレスを、UBUNTU_IPにセットします。GStreamerのパイプラインは、冒頭で示したパイプラインを実現しています。

export LIBCAMERA_IPA_MODULE_PATH="/usr/lib/libcamera/ipa"
export LIBCAMERA_PIPELINES_MATCH_LIST="nxp/neo,imx8-isi,uvc"
CAMERA0=/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36
UBUNTU_IP="172.16.80.138"

gst-launch-1.0 \
  libcamerasrc camera-name="${CAMERA0}" ! \
  "video/x-raw,format=YUY2,framerate=30/1,width=3840,height=2160" ! \
  imxvideoconvert_g2d rotation=4 ! \
  "video/x-raw,width=1920,height=1080" ! \
  queue ! \
  v4l2h265enc  ! \
  "video/x-h265,level=(string)5,profile=(string)main" ! \
  queue ! \
  rtph265pay mtu=1400 config-interval=1 pt=96 ! \
  udpsink host=${UBUNTU_IP} port=5000 sync=false

これをシェルで実行する、あるいは全部コピーしてスクリプトにして実行でもいいです。

 

3. ネットワークカメラの実行例

以下のビデオが実行例です。FRDM-IMX95には電源しか繋がっていないことから分かるとおり、
Wi-Fiによる通信で実施しています。Ubuntu PC側もWi-Fiで、AP経由でFRDM-IMX95とUbuntu PCが接続されています。

(view in My Videos)

 

おわりに

今回はネットワークカメラの導入方法について紹介しました。送信側のFRDM-IMX95ボードには、Wi-Fiチップも搭載されているため、簡単にデモを実施することができました。

ネットワーク環境、受信側のPC性能(H.265のデコード性能)の影響はあると思いますが、Full HD(1920x1080)でのストリーミングも十分可能かと思います。

 

=========================

本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。
お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 問い合わせ方法 (日本語ブログ)」をご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)