5GHz WiFi対応させたPi Zero rev1.3とPi Cameraでミニマムなネットワークカメラを作ってみた(mjpg-streamer版)

前回に引き続きPi Zero rev1.3ネタです。

rev1.3を使うからには、増設されたPi Cameraコネクタを使ってナンボでしょう!

という事で、今回はPi Cameraモジュールを使って無線LANなミニマムなネットワークカメラにしてみようと思います。

<ご参考>Pi Zeroで5GHz WiFiなGW-450D2を使える様にしたお話。

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

【2017/09/21追記】

2017年版として、もっと小型のPi Zeroカメラシステムを公開しました。詳しくはコチラ↓

Pi Zeroと互換Piカメラを使った超小型ケースを作ってみた(STLデータ公開有り)
RaspberryPi財団公式Pi Zeroケースが出る前に、このブログでもフリスクっぽい感じのケースを自作してましたが、Piカメラが内蔵出来ないという点で後発の財団公式ケースに負けてしまいました。 だって普通に買えるPiカメラ用フレキがメチャ長なんだもん。ヽ(`Д´)ノプンプン リベンジとして、前回記事の3Dプリンタサーバーで使ったとても小さい互換Piカメラを使って、財団公式ケースに負けない超小型ケースを作ってみました♪ 毎度の様にSTLデータも公開しておりますので、アンチ公式ケース派の方...

スポンサーリンク

Piをネットワークカメラとして使う方法いろいろ

ネットワークカメラソフトウェアを使えば、ネットワークカメラに早変わりです。

Raspberry Piで動くモノも幾つかあるみたい。

Motion

公式リンクはコチラ

動態検知などの機能がある様で、監視カメラ用途に使えそう。

Pi Zeroでも動作しました。遅延も少ないです。

但し、監視カメラ用途でデフォルトでストレージアクセスが頻繁な為、microSDカードの寿命を気にして今回は採用せず。

設定でストレージキャッシュ書き込み無しに出来そうではありましたが、追求してません。

GStreamer

公式リンクはコチラ

ストリーミング用途で圧縮されるのか、遅延が大きい。

Pi Zeroで安定させて動作できなかったので、現状では採用せず。

mjpg-streamer

githubリンクはコチラ

昔のデジカメや低価格ネットワークカメラなどの採用されているMotion JPEG(MJPEG)を使ってるので、CPUパワーがそれほど必要なく低遅延。

今回採用した方式です。

必要なモノの準備

先日用意したPi Zero rev1.3 & GW-450D2周り以外に必要なモノはこれだけ。dsc04671

Pi Camera v2.1

別に最新のv2.1じゃなきゃいけない理由は有りません。単に私がv2.1で試したというだけです。

公式Piカメラの通常タイプ(v2.1)

公式Piカメラの赤外線対応(赤外線フィルタ無し)タイプ(v2.1)

Pi Zero専用フレキケーブル

残念ながら、Pi Cameraに同梱されてるフレキは使えません。

Pi Zero rev1.3とPi Cameraを繋ぐには、Pi Zero専用のフレキが必要です。

作業概要

トランジスタ技術の2016年11月号でRaspberryPiとPi Cameraモジュールを使った特集があり、参考にさせて頂きました。

しかし、トラ技にこんな記事が載るとは・・・時代を感じます。(笑)

また、コチラのサイトの情報も参考にさせて頂きました。有難うございます。m(__)m

大雑把な流れになりますが、こんな感じです。

  1. Pi Cameraを接続し、コンフィグでアクティブ化
  2. mjpg-streamerのインストール
  3. 配信画質設定と自動起動の設定
  4. ネットワーク視聴確認

では作業を進めましょう。

Pi Cameraを接続し、コンフィグでアクティブ化

Pi Cameraを接続する

Pi Cameraとフレキを繋ぎます。

フレキには裏表有りますので向きに注意しましょう。この向きになる様に繋ぎましょう。dsc04672

っと、剥き出しだと万が一接触ショートして壊れる危険もありますので、ケースに入れておきます。

Pi Zero専用ケース(rev1.3対応)はコチラ↓

RaspberryPiZero用のケースを作成してみた(STLデータ公開有り)
先日Raspberry Pi2/3用ケースをご紹介しましたが、もっと小型のRaspberry Pi Zero用のケースもご紹介しようと思います。 カメラ用のフレキコネクタが追加された新型Pi Zero(ver1.3)に対応しています。

Pi Camera専用ケースはコチラ↓

レーザーカッターでRaspberryPi専用カメラのケースを作成してみた(SVGデータ公開有り)
先日レーザーカッターでRaspberryPiケースを作った話をご紹介しました。 今回は、RaspberryPi専用カメラのケースも作ってみたというお話。 ちょっと拘って、パン・チルトも可能な造りにしてみました!!

尚、Pi Camera専用ケースに収めるには、穴からフレキを通してから繋ぐ必要が有ります。dsc04673

Pi Zeroケースに載せてみました。dsc04674

うん、凄いミニマム感。(笑)

一通り接続出来たら、起動させてSSH接続しましょう。

初期設定を行う

続いて、下記コマンドで初期設定を行います。

$ sudo raspi-config

下記の項目を修正してください。

[Enable Camera]

Pi Cameraをアクティブにします。

以上の項目を修正したら、Finishを選んで再起動しましょう。

mjpg-streamerのインストール

再起動したらもう一度SSH接続します。

Pi Cameraがアクティブになっているか確認する

フレキ接続のミスや、初期不良などの可能性もありますので、念の為に。

$ vcgencmd get_camera

正しく動いているなら下記の様に返ってくる筈です。

supported=1 detected=1

mjpg-streamerをインストールする

下記コマンドを実行します。

$ sudo apt-get update
$ sudo apt-get install libjpeg9-dev cmake
$ sudo git clone https://github.com/jacksonliam/mjpg-streamer.git mjpg-streamer
$ cd mjpg-streamer/mjpg-streamer-experimental
$ sudo make
$ cd
$ sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer

補足すると、「libjpeg9-dev」は、JPEGイメージファイルの読み書きをするアプリケーションだそうで。

「mjpg-streamer」は、今回のメイン動画ストリーミングアプリケーションで、「mjpg-streamer-experimental」は、「mjpg-streamer」をPi Camera対応にしたアプリケーションで、オプショナルなのかコンパイルしないと使えないという事みたい。

配信画質設定と自動起動の設定

mjpg-streamerの設定スクリプトを作成する

下記コマンドで、配信画質を設定するスクリプトファイルを新規作成します。

$ sudo vi /home/pi/start_stream.sh

下記の内容をコピーして保存終了させてください。

#!/bin/bash

if pgrep mjpg_streamer > /dev/null
then
echo "mjpg_streamer already running"
else
LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" > /dev/null 2>&1&
echo "mjpg_streamer started"
fi

スクリプトの赤字部分は下記のパラメータを挿してます。お好みに合わせて修正してください。

-fps 15 で、1秒当たりのフレーム数を指定しています。

-x 640 -y 480 で、解像度を指定しています。

-q 50 で、JPEGの品質を指定しています。(1~100)

-p 9000 で、配信するポート番号を指定しています。

スクリプトが自動起動する様に設定する

先程のスクリプトを「/etc/rc.local」に追記します。

$ sudo vi /etc/rc.local

最終行「exit 0」の前の行に、下記を差し込みましょう。

sh /home/pi/start_stream.sh

書込み後保存終了したら、一度再起動させます。

$ sudo reboot

ネットワーク視聴確認

ここまでうまく行っていれば、再起動後にブラウザで「PiのIP:9000」にアクセスしてみましょう。

例:http://192.168.xx.xx:9000

※赤字はPi Zero(GW-450D2)のIPアドレスに読み替えて下さい。

Pi Cameraから、dsc04623

こんな感じに見えてる筈です。(Streamを選択すると動画、Staticは静止画です)mjpg-streamer%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e7%94%bb%e9%9d%a2

※キャプチャ時は画面回転させて正位置にしてあります。

尚、本記事では、宅内ネットワーク止まりとなっております。

外出先でも見れる様にするには、セキュリティ対応などもうひと手間必要なので、また改めて。

(参考データ)画質設定によるデータ転送量の比較

ネットストリーミングでスループット10Mbps程度で抑えれて、画質が良い組み合わせを探したいと思います。

先程の画像のと違って、赤外線対応タイプのPi Cameraでキャプチャしたので、画像がやや赤っぽいですが、ご容赦を。

マクベスチャートとかあれば比較しやすいのですが・・・流石に持ってないのです。(;´・ω・)

作業台に置いて映しただけなので、対象の画像がイマイチなのはお目こぼし下さい。m(__)m

VGA(640×480)、15fps、JPEG品質100

Windows10のタスクマネージャー読みで、スループットは21Mpbs程度。

静止画キャプチャしたJPEG画像は品質100だけにかなりクッキリしてる。640-480_15fps_q100

VGA(640×480)、15fps、JPEG品質50

18Mpbs程度。

品質100と比べて差を感じない。640-480_15fps_q50

VGA(640×480)、15fps、JPEG品質25

11Mpbs程度。

まだ品質100と比べて差を感じない。640-480_15fps_q25

VGA(640×480)、15fps、JPEG品質10

4Mpbs程度。まだ十分な画質。差を感じない。640-480_15fps_q10

VGA(640×480)、15fps、JPEG品質5

2Mpbs程度。かなり劣化してきた。640-480_15fps_q5

VGA(640×480)、15fps、JPEG品質1

800k~1Mpbs程度。 設定再下限だけに、画質はモザイク画像レベルまで超絶劣化。(笑)640-480_15fps_q1

ということで、品質設定は10程度でも画質劣化を気にせずに使えそう。

(撮影対象によって差がある可能性有ります)

続いて、品質設定10のまま、解像度を上げてみる。

SXVGA(1280×960)、15fps、JPEG品質10

11Mbps程度。1280-960_15fps_q10

HD(1280×720)、15fps、JPEG品質10

9Mbps程度。 16:9だと左右が広がるかと思いきや、上下がトリミングされただけだった。(笑)1280-720_15fps_q10

FullHD(1920×1080)、15fps、JPEG品質10

17Mbps程度。 HDと同じ16:9なのにトリミング量が増えてる・・・謎です。1920-1080_15fps_q10

という事で、11Mbpsと実用的なレベルで最大画角になる設定は「SXVGA(1280×960)、15fps、JPEG品質10」でしょうか。

もっとも、外出先からモバイルで視聴とか出来る様にするには、3~5Mbps程度には抑えないとパケ死しそう。(笑)

ちなみに、Raspberry PiのGPUにはH.264のハードエンコーダーが載ってるみたいなので、コレが活用できるとCPUパワーも抑えれてデータ帯域も抑えれてと万々歳なんですが、まだ使える状況には辿り着いてません。

CPU温度とのバランスも必要

「SXVGA(1280×960)、15fps、JPEG品質10」設定で放置してみたところ、CPU温度が結構上がってました。

下記コマンドでCPU温度を見る事が出来ます。

$ vcgencmd measure_temp

とすると下記の様に出てきました。

temp=54.1’C

Pi Zeroをケース入れた状態で、30分程放置してこの温度でした。

ちょっと危険域かもしれませんので、フレームレートを15fpsから10fpsへ落としたところ、11Mbpsから7~8Mbpsへ転送量が落ち、温度も50℃付近へやや落ちてくれました。

謝辞

参考にさせて頂いた諸々のサイトリンクです。

mjpg-streamerのインストールについて、参考にさせて頂きました。

同じく、mjpg-streamerのインストールについて、参考にさせて頂きました。

CPU温度を測る方法について、参考にさせて頂きました。

動画コーデックの種類と違いについて、参考にさせて頂きました。

有難うございました。m(__)m

トランジスタ技術2016年11月号

公式Piカメラの通常タイプ v2.1

公式Piカメラの赤外線対応(赤外線フィルタ無し)タイプ v2.1

新型Pi Zero(ver1.3)のセット

Pi Zero用カメラケーブル

スポンサーリンク

この記事をシェアする

  • このエントリーをはてなブックマークに追加

このブログをフォローする