アフィリエイト広告を利用しています

広告

posted by fanblog

Jetson Nano - その5: Homebridge-camera-ffmpegを動かす

とりあえず、いつものごとくHomebrigdeを入れてカメラを動かします。

○Jetson Nano用のFFMPEGをインストール
Jetson Nano用にコンパイルして、FFMPEG上でNVENC、NVDECというHWエンコーダを使えるようにします。

こちらのサイトを参考にビルドしてインストールしてください。


○Nodeのインストール
ここのHomebridgeのサイトに書いてある通りにインストールします。

ちなみに今のイメージでは、8.10.0がプリインストールされている筈です。

コマンドは以下の通りです。

# setup repo
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

# install Node.js
sudo apt-get install -y nodejs gcc g++ make python net-tools



何事も問題なければ、以下のバージョンが表示されると思います。

# Check installed version
node -v
v14.15.4

npm -v
6.14.10



○Homebridgeのインストール

1) Homebridgeのインストール
私はUIを使っていないので、本体は以下の一行で終わりです。

sudo npm install -g --unsafe-perm homebridge



2) Homebridge-camera-ffmpegのインストール
ここのサイトに書いてある通りに以下のコマンドで実行します。

sudo npm install -g homebridge-camera-ffmpeg --unsafe-perm



3) config.jsonの編集
まず、何もせずに以下のコマンドでhomebridgeを実行します。

homebridge


すると、.homebridgeの下にconfig.jsonが見つかりませんという感じのメッセージが表示されると思います。
一旦、Control-Cか何かで実行したプログラムを止めます。

ここでサンプルのconfig.jsonをコピーしてきます。

cp /usr/lib/node_modules/homebridge/config-sample.json ~/.homebridge/config.json


コピーしたconfig.jsonをエディタで開いて、camera-ffmpegを追加します。
私はconfig.jsonはこんな感じで設定しています。

(1) 入力ソースを前回設定したrtspサーバーにしています。
"source": "-i rtsp://localhost:8554/test",

(2) Jetson Nano用のFFMPEGを使うように以下のように設定しています。
"videoProcessor": "/usr/local/bin/ffmpeg", <= Jetson Nano用のFFMPEG
"vcodec": "h264_nvmpi", <= NVENCを使うように設定


ちなみに、NVDECを使おうとすると動作しなくなります。
config.jsonを以下のように変更するとDecoderとしてNVDECが呼ばれるのですが・・・上手く動作しません。

"source": "-codec h264_nvmpi -i rtsp://localhost:8554/test",





○実行

1) RTSPサーバーの立ち上げ
以下のコマンドで720P@30FrameでRTSPサーバーを立ち上げます。

./test-launch "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1 ! omxh264enc ! queue ! rtph264pay name=pay0 pt=96"


ちなみに、画質をいじりたい場合は、こんな感じでnvarguscamerasrcにパラメータを渡します。
NVIDIAのフォーラムのここに書いてありました。

./test-launch "nvarguscamerasrc gainrange='8 8' exposuretimerange='5000000 5000000' ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1 ! omxh264enc ! queue ! rtph264pay name=pay0 pt=96"


2) Homebridgeの実行

以下のコマンドを実行すると、QRコードが表示されると思いますので、iPhoneでHomeKitにアクセサリを登録します。
homebridge



3) デモ

あとは、登録されたビデオを開くとこんな感じでカメラの画像がiPhone(iPad)でみれると思います。

(Jetson側で)Encode=>Decode=>Encode=> (iPhone/iPad側で)Decodeをやっている割にはLatency(=0.5秒ぐらい)も悪くないように思えます。




ちなみに、以下のようにjtopでNVENCが動いていることがわかります。

Screen Shot 2021-02-08 at 23.10.13.png



トラックバック

コメント

お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのコメント

   
検索
検索語句
記事ランキング
最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。