第8回: MJPG-streamerのインストール

 

今回は,手軽にビデオ映像をストリーミング配信できるプログラム「MJPG-streamer」を導入する。
なお,MJPG-streamerの本家はRaspberry Piのカメラモジュールに対応していない。そこで,Piカメラに対応した派生版を別途ビルドし,Piカメラ用プラグインのみを流用する。

1. MJPG-streamerのインストール

ラズパイのホームディレクトリがごちゃごちゃするのがいやなのでディレクトリ「~/tools」を作り,そこにmjpeg-streamerをインストールする。

MJPG-streamerのインストールは、Subversionによって行う。

まずは、Subversion及びMJPG-streamerが必要とするパッケージをインストールする。

続けてMJPG-streamerをダウンロード

次の手順でMJPG-streamerをビルドする。

MJPG-streamerの関係ファイルが「~/tools/mjpg-streamer/」に出来上がった。

次のコマンドは、MJPG-streamser関係ファイルを「/usr/local/…」へインストール(コピー)するものである。
pi配下のディレクトリ「~/tools/mjpg-streamer/」あるいは「/usr/local/…」のどちらに配置して運用するかはお好み次第。私は「~/tools/mjpg-streamer/」で運用することにしたので、次のコマンドは実行していない。

 

2. USBカメラを使ったテスト

Piカメラでストリーミングするのを一先ず置いといて、一般的なUSBカメラでMJPG-streamerの実験をする。

接続したUSBカメラはこれ。

USBポートにカメラを接続すると、ラズパイがカメラを自動的に認識し、USB機器リストにリストアップされる。

また、デバイスファイル「/dev/video0」が作成された。

MJPG-streamerのヘルプを確認すると…

USBカメラ(UVC)用プラグインのヘルプは…

次のコマンドでストリーミングを開始する。
各オプションは次のとおり。

  • -i: 入力側の設定
    • input_uvc.so: 入力ソースはUVC(USB Video Class)。つまりWEBカメラ。
    • -d: デバイスファイル
    • -r: ビデオの解像度
    • -f: フレームレート
    • -y: YUVフォーマットを指定する
    • -n: Linux-UVCドライバのdynctlsを無効にする
  • -o: 出力側の設定
    • output_http.so: ストリーミングの出力先はWEBページ
    • -w: WEBページのドキュメントを配置するディレクトリ
    • -p: ポート番号
    • -c: ユーザ名:パスワード(WEBページのBASIC認証)

WEBブラウザで「http://[ラズパイのIPアドレス又はドメインネーム]:[ポート番号]」にアクセスする。
私の環境では「http://raspi2.local:8080」
ブラウザ上にカメラの映像が表示されればセットアップ成功。

MJPG-streamer WEBページ

MJPG-streamer WEBページ

USBカメラ+MJPG-streamerの実験が成功した。
ターミナルで「CTL+c」を押し、起動中のコマンド「mjpg_streamer」を終了してストリーミングを停止する。

 

3. 派生版MJPG-streamerのPiカメラ対応 プラグイン

まず、第7回で作ったディレクトリ「~/git」に派生版MJPG-streamerをダウンロードする。

続いてビルド

何か、いっぱいエラーが出た。

どうも、OpenCVプラグイン関係でがエラーを吐いているらしい。
派生版MJPG-streamserはPiカメラ対応プラグインの他、OpenCV 3.1対応のプラグインも生成する。ところで、第5回にてこのラズパイにOpenCV 2.4.13をインストールした。そのためにエラーが発生しているのかも知れない。

そこで、OpenCVプラグインのビルドをキャンセルするために、「CMakeLists.txt」を編集する。そのコマンドは、

次のように、行頭に’#’を追加してコメントアウトする。

再度ビルドすると今度は成功した。

次のファイルが生成された。

もちろん、派生版MJPG-streamerを使ってもストリーミングが可能である。しかし,派生版はバージョンが古い。そこで派生版をビルドすると出来上がるPiカメラ用プラグイン「input_raspicam.so」のみを拝借する。

次のコマンドでPiカメラ用プラグインを本家をインストールしたディレクトリにコピーする。

 

4. Piカメラを使ったテスト

Piカメラ用プラグインのヘルプでオプションを確認する。

次のコマンドでPiカメラによるストリーミングを開始する。
各オプションは次のとおり,

  • -i: 入力側の設定
    • input_raspicam.so: 入力ソースはPiカメラ。
    • -x: ビデオの幅
    • -y: ビデオの高さ
    • -fps: ビデオのフレームレート
  • -o: 出力側の設定
    • output_http.so: ストリーミングの出力先はWEBページ
    • -w: WEBページのドキュメントを配置するディレクトリ
    • -p: ポート番号
    • -c: ユーザ名:パスワード(WEBページのBASIC認証)

WEBブラウザにストリーミング動画が表示されれば、Piカメラ+MJPG-streamerの実験が成功。
ターミナルで「CTL+c」を押し、起動中のコマンド「mjpg_streamer」を終了してストリーミングを停止する。

ラズパイには,本家と派生版の2つのMJPG-streamerがインストールされている。テストが無事に終了したので,用済みの派生版を消去する。

 

5. 自動起動

ラズパイが起動したとき、自動でストリーミングを開始するように設定する。

まずは,起動スクリプト「mjpg_streamer_boot.sh」を次のコマンドで作成する。

内容は次のとおり。

アクセス権の変更

Supervisorによってスクリプトをデーモン化する。

まずは、Supervisorのインストール

設定ファイルを次のコマンドで作成する。

内容は次のとおり。

ラズパイを再起動する。

再起動後にログインし、Supervisorがmjpg_streamer_bootが起動したことを確認する。「RUNNING」ならばOK。

続けて、WEBブラウザでストリーミング動画を確認できれば、自動起動の設定完了。

 

2016.6.27追記

MJPG-streamerを電源投入時に自動起動したくないなら、「mjpg-streamer-boot.comf」の一部を次のとおり変更する。

MJPG-streamerを起動するのは次のコマンド

MJPG-streamerを停止するのは次のコマンド

 


☝ 目次

 第7回: OpenCVからカメラモジュールを操作する

第9回: ラズパイのリモート開発環境の構築 その1


2016-06-08 作成
2016-06-27 更新

Leave a Comment

メールアドレスが公開されることはありません。