私的AI研究会 > 動画配信
MJPG-streamerを使ってRaspberryPi 搭載のカメラモジュールから動画配信する。
※「RaspberryPiで学ぶ電子工作」10.4.1 (292ページ)参照
本とは異なり、ホームディレクトリ直下に /work ディレクトリを作成してその中で作業する。$ mkdir work $ cd work
- パッケージの更新を確認する。
$ sudo apt update ヒット:1 http://ftp.jaist.ac.jp/raspbian buster InRelease ヒット:2 http://archive.raspberrypi.org/debian buster InRelease パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージはすべて最新です。
$ sudo apt upgrade
$ sudo apt install libjpeg8-dev cmake パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: cmake-data libjsoncpp1 librhash0 提案パッケージ: cmake-doc ninja-build 以下のパッケージが新たにインストールされます: cmake cmake-data libjpeg8-dev libjsoncpp1 librhash0 アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。 4,438 kB のアーカイブを取得する必要があります。 この操作後に追加で 22.1 MB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://ftp.jaist.ac.jp/raspbian buster/main armhf cmake-data all 3.13.4- 1 [1,476 kB] 取得:2 http://ftp.jaist.ac.jp/raspbian buster/main armhf libjsoncpp1 armhf 1.7.4-3 [66.2 kB] : : cmake (3.13.4-1) を設定しています ... man-db (2.8.5-2) のトリガを処理しています ... libc-bin (2.28-10+rpi1) のトリガを処理しています ...
$ git clone https://github.com/jacksonliam/mjpg-streamer.git Cloning into 'mjpg-streamer'... remote: Enumerating objects: 2953, done. remote: Total 2953 (delta 0), reused 0 (delta 0), pack-reused 2953 Receiving objects: 100% (2953/2953), 3.48 MiB | 1.20 MiB/s, done. Resolving deltas: 100% (1878/1878), done.
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make [ -d _build ] || mkdir _build [ -f _build/Makefile ] || (cd _build && cmake -DCMAKE_BUILD_TYPE=Release ..) -- The C compiler identification is GNU 8.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done : : make[3]: ディレクトリ '/home/pi/work/mjpg-streamer/mjpg-streamer- experimental/_build' に入ります [ 96%] Building C object plugins/output_udp/CMakeFiles/output_udp.dir/output_udp.c.o [100%] Linking C shared library output_udp.so make[3]: ディレクトリ '/home/pi/work/mjpg-streamer/mjpg-streamer- experimental/_build' から出ます [100%] Built target output_udp make[2]: ディレクトリ '/home/pi/work/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます make[1]: ディレクトリ '/home/pi/work/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
$ cd .. $ cd .. $ ls mjpg-streamer webiopi
$ sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer
$ vi streamer-start.sh #!/bin/bash if pgrep mjpg_streamer > /dev/null then echo "mjpg_streamer already running" else LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" > /dev/null 2>&1& echo "mjpg_streamer started" fi
$ chmod u+x streamer-start.sh $ ls -l 合計 12 drwxr-xr-x 3 pi pi 4096 7月 12 15:54 mjpg-streamer -rwxr--r-- 1 pi pi 327 7月 12 16:03 streamer-start.sh drwxr-xr-x 3 pi pi 4096 7月 12 05:32 webiopi
$ vi streamer-stop.sh #!/bin/bash if pgrep mjpg_streamer then kill -9 $(pidof mjpg_streamer) echo "mjpg_streamer stopped" else echo "mjpg_streamer not running" fi $ chmod u+x streamer-stop.sh※ 自動起動されたプロセスは停止には管理権限が必要のよう。
$ ./streamer-stop.sh 1010 ./streamer-stop.sh: 5 行: kill: (1010) - 許可されていない操作です mjpg_streamer stopped $ ps ax |grep mjpg_streamer 1011 ? Sl 1:23 /opt/mjpg-streamer/mjpg_streamer -i input_raspicam.so -fps 15 -q 50 -x 640 -y 480 -o output_http.so -p 9000 -w /opt/mjpg-streamer/www 1863 pts/1 S+ 0:00 grep --color=auto mjpg_streamer再度実行する。
$ sudo ./streamer-stop.sh 1010 mjpg_streamer stopped $ ps ax |grep mjpg_streamer 3523 pts/0 S+ 0:00 grep --color=auto mjpg_streamer
$ ./streamer-start.sh mjpg_streamer started
http://192.168.xxx.xxx:9000