HomeMadeGarbage Loading

Raspberry Pi 2 のカメラを motion から MJPG-streamer に変更

ホーム
電子工作
Raspberry Pi
IOT
音楽
Home > Raspberry Pi > Raspberry Pi 2 のカメラを motion から MJPG-streamer に変更
すき 0
うんこ 1

motion で監視カメラとして家の様子をストリーミングしているのだけど、motionは結構、遅延が大きい。

今のところ、動体検知や録画はしていないので、MJPG-streaming を使ってみることにした。

カメラ

カメラも替えました。こちらです。画像も綺麗で良い感じ!

そのうちRaspberry Pi 上に、長女ちゃんのマイクラ実況配信システムを構築したいので、音声も拾えるやつにしました。


 

MJPG-streamer のインストール

恒例の

モジュール

ソースコードをDL

ディレクトリ移動

make する

インストール

※ インストールしなくてもmjpg-streamer のディレクトリで動作します。(下記の記述は mjpg-streamer ディレクトリで動かしています。)

MJPG-streamer の起動

まずは現在動いている motion を停止

MJPG-streamer を起動!

・・・起動はしたけど、カメラ画面が真っ白で何も映っていない。

YUYV のオプションをつける必要があった。-y を付けて起動。

映ったー!

元々 motion で設定してあった 8081 ポートに Basic認証つきで 640×480 で 公開する。-b を指定するとバックグラウンドモードでの起動。

 

MJPG-streamer の自動起動を設定する

シェル・スクリプトのファイルを作成 

ホームディレクトリに、シェル・スクリプト用のディレクトリ作成。
(シェル・スクリプトって普通どこに置くんだろ)

ディレクトリ移動

ファイル作成

私はこのように設定しました。

動作確認

実行

動くことを確認して、一旦終了してみる。

終了

通常起動時の終了方法は、Control + C で終了させます。バックグラウンドモードの場合は、下記のコマンドで終了します。

これで、カメラを再起動したい場合も、上記コマンドで出来るようになりました。

シェル・スクリプト追加

下記二行を追加

こんな感じになりました。

 設定が完了したので、最初にDLしてmakeした mjpg-streamer ディレクトリは削除しました。

motion のアンインストール

motion は一旦アンインストールしておく

アンインストール後はこれもやっといとが特に何も削除されなかった

ウェブページに埋め込み

埋め込んでいたページのURLを変更

ストリーミングの様子

フレームレート15もあればヌルヌル動く!!MJPG-Streamerは遅延も僅かでとってもいい感じ!

CPU使用率

[2017年2月1日追記] CPU使用率についてご質問を頂いたので調べてみました。

vmstat だと 18% 

top (+1)だと、70%前後 という感じでした。

もう少し下げた方が良いかも知れない…。

ON/OFF ボタンを付けてみた

MJPG-streamer カメラをブラウザから起動/終了させる

 参考にさせて頂きました

「Raspberry Pi 2 のカメラを motion から MJPG-streamer に変更」への10件のフィードバック

    1. 現在のCPU使用率を確認してみました。記事に追記しましたので参考になれば幸いです。

  1. ありがとうございます。参考にさせていただきました。
    make install後にディレクトリを削除されています。ですがその後のコマンド例ではmake installしたモジュールではなく、ディレクトリ内のファイルを使っていると思われます。
    また、svnを実行したのは自分なので、ディレクトリを削除するのにsudoは不要かと思われます。

  2. 複数カメラを指定した際に片方だけアクセスが出来ません。
    ポートを8494、8495にしています。
    以下抜粋コードです。

    $MJPG_STREAMER \
    -i “input_uvc.so -f $F_RATE -r $SIZE -d /dev/video0 -y” \
    -o “output_http.so -w /usr/local/www -p $PORT0 -c $ID:$PW” -b
    $MJPG_STREAMER \
    -i “input_uvc.so -f $F_RATE -r $SIZE -d /dev/video1 -y” \
    -o “output_http.so -w /usr/local/www -p $PORT1 -c $ID:$PW” -b

    並列で動作できないのか、先に起動したvideo0の映像へはアクセスできますが、
    video1へはアクセスできません。
    書き方が悪いのでしょうか?

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください