ストリーミングサーバを構築してみた
やること概要
ラズパイにカメラモジュールを取り付けてライブ配信サイトを作る。
環境
ラズパイ上にライブ配信サイトを構築して、Windowsパソコンでライブ配信が見れるようにします。ラズパイとパソコンはネットワークで通信できるようにしておきます。
カメラモジュールの情報
ラズパイに取り付けたカメラモジュールの情報を紹介します。
amazonで買いました。
カメラをラズパイに接続します。
購入したカメラはこれ。これをラズパイに接続します。
(ラズパイは電源を外した状態で作業します)
ラズパイのここ(赤枠)に接続します。
カメラ側のコネクタ(オレンジ枠)の向きに注意。銀色の配線が見えている側を写真のようにします。
接続するとこんな感じになります。
ラズパイにカメラモジュールを認識させます。
カメラを接続した後、ラズパイOSを起動しSSH接続します。
まずは、apt-get を更新します。
$ sudo apt-get update
$ sudo apt-get upgrade
ラズパイにカメラモジュールを認識させるため、ラズパイの設定画面を開きます。
$ sudo raspi-config
設定画面が開いたら『5 Interfacing Options』を選択します。
『P1 Camera』を選択します。
『はい』を選択します。
『了解』を選択します。
『Finish』を選択します。
『はい』を選択して、ラズパイOSを再起動します。
ラズパイOS再起動後に、再びSSH接続します。
カメラを認識しているか確認します。以下のvcgencmdコマンドの結果が、supported=1 detected=1 となればOKです。
$ vcgencmd get_camera
(オプション)もしカメラが認識できなければファームウェアを更新すると良いことがあるかも。ただし、このコマンドはあまり推奨されてないようなので、最後の手段と思った方が良さそうです。
$ sudo rpi-update
カメラを認識できているか確認します。
ラズパイOSにSSHで再び接続します。
カメラの動作確認のため、カメラ映像をjpg画像として出力してみます。
raspistill コマンドがエラーなくコマンドが終了すれば成功です。
→エラーになったときはトラブルシュート(*1)が参考になるかも
raspistill -o test.jpg
mjpeg-streamer をインストールします。
必要なパッケージをインストールします。
カレントディレクトリがインストール先になるので、mjpeg-streamer用にディレクトリ( ~/Data/mjpg )を作成します。
$ sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick
$ mkdir ~/Data/mjpg
$ cd ~/Data/mjpg
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
mjpg-streamerを起動してストリーミング配信します。
以下のコマンドを実行しmjpg-streamerを起動します。
→エラーになったときはトラブルシュート(*1)が参考になるかも
./mjpg_streamer -o "./output_http.so -p 8090 -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10"
こうなれば起動しています。
ストリーミングサイトにアクセスしてみる
カメラの前に箱を置いて、検証してみます。ライブ配信サイトで箱の映像が見えたら成功です。
Windowsパソコンからストリーミングサイトにアクセスします。
ブラウザを起動し、URL ( http://{ラズパイのIPアドレス}:{ポート番号} )にアクセスします。(例 http://192.163.33.103:8090 )
ストリーミング映像のみ表示する場合のURL
http://{ラズパイのIPアドレス}:{ポート番号}/javascript_simple.html
(例 http://192.163.33.103:8090/javascript_simple.html)
トラブルシュート
(*1)
ラズパイに接続したカメラが認識できていないと、こんなエラーになりました。
newpi@raspi-hoge:~/data/mjpg/mjpg-streamer/mjpg-streamer-experimental $ ./mjpg_streamer -o "./output_http.so -p 8090 -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10"
MJPG Streamer Version: git rev: f387bb44e6c087271b763b27da998bf2e06c4f5d
i: fps.............: 30
i: resolution........: 640 x 480
i: camera parameters..............:
Sharpness 0, Contrast 0, Brightness 50
Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0
Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none'
Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128
Rotation 0, hflip No, vflip No
ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000
o: www-folder-path......: ./www/
o: HTTP TCP port........: 8090
o: HTTP Listen Address..: (null)
o: username:password....: disabled
o: commands.............: enabled
i: Starting Camera
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
camera couldn't be enabled
<考えられる対策>
-vcgencmd get_cameraと実行し、supported=1 detected=1となっていないならraspi-config でカメラを有効に設定する。
-ファームウェアを更新(sudo rpi-update)するとカメラを認識するか確認します。
参考
参考にさせて頂いたサイトです。
さいごに
ラズパイにカメラを接続して、ストリーミングサーバーにしました。
せっかくできたので、何かに使おうと思います。
こんな弱小ブログでもサポートしてくれる人がいることに感謝です。