Raspberry Pi 2で遊ぶ(Ver.2.0):mjpg-streamerでリモートカメラ

このページは「Raspberry Pi記事まとめ 」に集約しています。

結局こいつになっちゃうのかぁって感じで。
今回もPiCameraではなくUVCを使って設定します。使用カメラはC270からQcam Orbitに。
今風に合わせ、自作サービスを作成してSystemdに登録もやってみます。

■ 基本情報
Raspberry Pi 2 Model B + Class10 16GB microSDXC + WLI-UTX-AG300
IPアドレス体系は192.168.24.0、DHCP運用
ホスト名はgusion、Avahiではgusion.local
ユーザ名はpiからakitakaに置き換え

パンチルト対応libwebcamのビルド

Raspbianカーネルバージョンの確認

前やったときは4.1.13だったのに今は4.4になってます。

$ uname -r
4.4.21-v7+

gitのインストール

入れるの忘れてた系

$ sudo apt-get install git

カーネル4.4ソースのダウンロード

UVCのドライバを作るのにカーネルのソースを一部使う必要があります。
apt-getでは古いバージョンだったりするので、RPiのサイトから拾ってくる必要があります。

$ git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.4.y

libwebcamのダウンロード

定番ダウンロード先であったquickcamteam.netというサイトはなぜか2010年頃から存在していません。なのでsourceforgeから落とします。

$ wget http://downloads.sourceforge.net/project/libwebcam/source/libwebcam-src-0.2.5.tar.gz
$ tar zxvf libwebcam-src-0.2.5.tar.gz

カーネルソースにあるのuvcvideo.hをlibwebcamにシンボリックリンク

$ ln -s /home/akitaka/linux/drivers/media/usb/uvc/uvcvideo.h libwebcam-0.2.5/common/include/uvcvideo.h

必要なソフトウェアをインストール

$ sudo apt-get install cmake gengetopt libxml2-dev

libwebcamのビルド

$ cd libwebcam-0.2.5
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig

mjpg-streamerのインストール

公式の物ではなくPiCameraに対応したものを入れます。

必要パッケージのインストール

今回はlibjpeg62でなくてもいけました。

$ sudo apt-get install libjpeg8-dev subversion imagemagick

mjpg-streamerのダウンロードとインストール

$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental/
$ make clean all
$ sudo make install

実行ファイルとWeb表示のファイルは以下の場所にあります。

  • 実行ファイル:/usr/local/bin/
  • プラグイン:/usr/local/lib/mjpg-streamer/
  • Webファイル:/usr/local/share/mjpg-streamer/www/

前は/usr/local/lib直下だったのにmjpg-streamer以下になってますね。

動作確認

仕方ないけどなんかすごい不細工なパス指定に。

$ mjpg_streamer -o "output_http.so -w /usr/local/share/mjpg-streamer/www" -i "input_uvc.so -d /dev/video0"

ブラウザから「gusion.local:8080」で見ることができます。

スクリプトの作成

ポートはデフォルトの8080から9000に変更します。

$ vi mjpg-streamer.sh

【新規ファイル】
#!/bin/sh

mjpg_streamer \
    -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -r 800x600 -f 15" \
    -o "/usr/local/lib/mjpg-streamer/output_http.so -w /usr/local/share/mjpg-streamer/www -p 9000 -c abe:1458"

パーミッション変更

$ chmod 755 mjpg-streamer.sh

実行は「./mjpg-streamer.sh」でいけます。

スクリプトをsystemdに登録

init.dに追加して終わってもいいのですが、今風の仕様に合わせsystemdに登録してみます。
mjpg-streamer起動オプションにバックグラウンド指定「-b」があると、サービス起動に失敗するので外しておきましょう。

参考サイト

mjpg-streamer.serviceの作成

$ sudo vi /etc/systemd/system/mjpg-streamer.service

【新規ファイル】

[Unit]
Descripton = MJPG Streamer

[Service]
ExecStart = /home/akitaka/mjpg-streamer.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

サービスの起動と終了

$ sudo systemctl start mjpg-streamer
$ sudo systemctl stop mjpg-streamer

いちいちps -axしてプロセスID調べてkillする必要がなくなりました。

サービス起動状態

サービス起動した状態で以下のコマンドを入れると状態のチェックができます。

$ sudo systemctl status mjpg-streamer

● mjpg-streamer.service
Loaded: loaded (/etc/systemd/system/mjpg-streamer.service; disabled)
Active: active (running) since 水 2016-10-19 11:55:46 JST; 2s ago
Main PID: 30461 (mjpg-streamer.s)
CGroup: /system.slice/mjpg-streamer.service
       ├─30461 /bin/sh /home/akitaka/mjpg-streamer.sh
       └─30462 mjpg_streamer -i /usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -r .

サービス常時起動に変更

起動・表示に問題がなければ、サービスを常時起動に変更します。

$ sudo systemctl enable mjpg-streamer

常時稼働やバックグラウンド動作するものは大体systemdに登録できそうです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中