見出し画像

ストリーミングサーバを構築してみた

やること概要

ラズパイにカメラモジュールを取り付けてライブ配信サイトを作る。

環境

ラズパイ上にライブ配信サイトを構築して、Windowsパソコンでライブ配信が見れるようにします。ラズパイとパソコンはネットワークで通信できるようにしておきます。

画像1

カメラモジュールの情報

ラズパイに取り付けたカメラモジュールの情報を紹介します。
amazonで買いました。

カメラをラズパイに接続します。

購入したカメラはこれ。これをラズパイに接続します。
(ラズパイは電源を外した状態で作業します)

画像2

ラズパイのここ(赤枠)に接続します。
カメラ側のコネクタ(オレンジ枠)の向きに注意。銀色の配線が見えている側を写真のようにします。

画像3

接続するとこんな感じになります。

画像4

ラズパイにカメラモジュールを認識させます。

カメラを接続した後、ラズパイOSを起動しSSH接続します。
まずは、apt-get を更新します。

$ sudo apt-get update
$ sudo apt-get upgrade

ラズパイにカメラモジュールを認識させるため、ラズパイの設定画面を開きます。

$ sudo raspi-config

設定画面が開いたら『5 Interfacing Options』を選択します。

画像5

『P1 Camera』を選択します。

画像6

『はい』を選択します。

画像7

『了解』を選択します。

画像8

『Finish』を選択します。

画像9

『はい』を選択して、ラズパイOSを再起動します。

画像10

ラズパイ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"

こうなれば起動しています。

画像11

ストリーミングサイトにアクセスしてみる

カメラの前に箱を置いて、検証してみます。ライブ配信サイトで箱の映像が見えたら成功です。

画像12

Windowsパソコンからストリーミングサイトにアクセスします。
ブラウザを起動し、URL ( http://{ラズパイのIPアドレス}:{ポート番号} )にアクセスします。(例 http://192.163.33.103:8090 )

画像13

ストリーミング映像のみ表示する場合のURL
http://{ラズパイのIPアドレス}:{ポート番号}/javascript_simple.html
(例 http://192.163.33.103:8090/javascript_simple.html

画像14

トラブルシュート

(*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)するとカメラを認識するか確認します。

参考

参考にさせて頂いたサイトです。

さいごに

ラズパイにカメラを接続して、ストリーミングサーバーにしました。
せっかくできたので、何かに使おうと思います。

こんな弱小ブログでもサポートしてくれる人がいることに感謝です。