読者です 読者をやめる 読者になる 読者になる

水菜巻のメモ的ななにか。

主にLinuxやAndroid、Web関連について書いています。自作アプリや趣味のことも書くかもしれません。The雑食ブログ。

RaspberryPiでWebカメラを使ってストリーミング動画を配信させてみた

密かに進めているRaspberryPiラジコン化計画ですが、どうしても必要になるのがこのWebカメラからの映像表示です。

RaspberryPiのカメラ映像をPCやスマートフォンなどで表示される方法で手っ取り早いのがストリーミング動画配信です。

Linux系でメジャーどころのストリーミング動画ソフトのmjpg-streamerを使って映像配信することにしました。

今回はcubic9.comさんのサイトを参考にやってみました。

mjpg-streamerのコマンドライン引数について詳しく説明されていて凄く参考になります。

是非一度目を通してみてくださいな。

 

準備するもの

用意するものはUVC対応のWebカメラです。

私は近くの家電量販店で売っていたLogicool HD Webcam C270というのを¥1,400くらいで購入して使ってみました。 

f:id:miz7maki:20141118005306j:plain

LOGICOOL ウェブカム HD画質 120万画素 C270

LOGICOOL ウェブカム HD画質 120万画素 C270

 

 

Webカメラ接続確認

まずはWebカメラをRaspberryPiに接続し、電源を入れましょう。

そうしたらWebカメラが認識されているかどうか確認します。

 

pi@raspberrypi ~ $ lsusb

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.

Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]

Bus 001 Device 009: ID 046d:0825 Logitech, Inc. Webcam C270

4行目のようにメーカー名、型式が表示されればOKです!

 

ソフトウェア、ライブラリのインストール

今回使用するソフトウェア、ライブラリは以下のとおりです。

  • libv4l-dev :Video for Linuxライブラリ
  • libjpeg8-dev :jpegランタイムライブラリ
  • imagemagick :画像処理ライブラリ
  • subversion :バージョン管理クライアント(今回はmjpg-streamerダウンロードに使用する)
$ sudo apt-get install libv4l-dev libjpeg8-dev imagemagick subversion

 

Video for Linuxライブラリヘッダファイルのシンボリックリンクを作ります。

$ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

 

Subversionクライアントでmjpg-streamerをダウンロードします。

$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer

 

あとはmjpg-streamerディレクトリに移動し、makeしてinstallします。

$ cd mjpg-streamer

$ make USE_LIBV4L2=true clean all

$ sudo make DESTDIR=/usr install

 

ストリーミング動画を表示!

スポンサーリンク

 

以下のコマンドでmjpg-streamerを起動させましょう!

$ mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 320x240 -f 30" -o "/usr/lib/output_http.so -p 8080 -w /usr/www"

※この場合、画像サイズは320x240[px]、フレームレート30[fps]、ポート8080番に/usr/wwwディレクトリ内のコンテンツを表示する設定となります。

 

ローカルネットワークに接続しているPCやスマートフォンのWebブラウザで"http://(RaspberryPiのIPアドレス):8080"にアクセスしてみましょう!

 

f:id:miz7maki:20150225024955p:plain

 

左側のメニューから[javascript]をクリックすると、ストリーミング動画が表示されます!

f:id:miz7maki:20150225025010p:plain

 

mjpg-streamerの自動起動設定

あとは必要に応じてRaspberryPi起動時にmjpg-streamerも自動起動するようにしてみましょう。

 

以下のような内容のファイルを作ります。

私はまんまmjpg-streamer.shというファイル名にしました。

#!/bin/sh

mjpg_streamer -b \

-i "/usr/lib/input_uvc.so -d /dev/video0 -r 320x240 -f 30" \

-o "/usr/lib/output_http.so -p 8080 -w /usr/www"

 

作ったシェルスクリプトのパーミッションを全ユーザ実行可能にします。

権限付与する場合は"chmod a+x"、絶対指定する場合は"chmod (3桁の8進数)"です。

絶対指定の場合は、左から順番に所有者、グループ、その他のユーザの権限を指定します。

例えば、755の場合は、所有者:7(読み込み/書き込み/実行 可能)、グループ:5(読み込み/実行 可能)、その他のユーザ:5(読み込み/実行 可能)となります。

パーミッションに関してはhttp://www.k-tanaka.net/unix/chmod.phpが詳しくてわかりやすいです。

$ chmod 755 mjpg-streamer.sh

mjpg-streamer.shを/etc/init.d/に移動します。

$ sudo mv mjpg-streamer.sh /etc/init.d/

自動起動を有効にします。

$ sudo insserv mjpg-streamer.sh

 

あとはRaspberryPiを再起動させて確認してみましょう!

sudo reboot

 

こんな感じでさっくりできました。

次回はおそらくRaspberryPiでモータ動かしたりするかもしれないです(確信はなしw)

それでは!ヾ( ´ー`)ノ

 

参考:

http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/RaspberryPi/%A5%A6%A5%A7%A5%D6%A5%AB%A5%E1%A5%E9%A4%C7%A5%B9%A5%C8%A5%EA%A1%BC%A5%DF%A5%F3%A5%B0/

http://www.k-tanaka.net/unix/chmod.php

LOGICOOL ウェブカム HD画質 120万画素 C270

LOGICOOL ウェブカム HD画質 120万画素 C270

Raspberry Piで遊ぼう! 改訂第3版?Model B+完全対応(Model B,  2にも対応)

Raspberry Piで遊ぼう! 改訂第3版?Model B+完全対応(Model B, 2にも対応)