● Raspberry Pi5 OS Ver.12 bookwormに ustreamerを installする
2024.06.19 更新:2026.04.20
Raspi5の OS Ver.12 bookwormに mjpg-streamerを installしようとしても簡単ではない様です。
これは mjpg-streamer が「libjpeg8-dev」を必要としますが、これはもう利用できず
その後継である libjpeg9-dev はこれと互換性がないためです。
さらに mjpg-streamer のリポジトリは放棄されているようで、
修正される可能性は低いですと、述べている英文記事を見つけました。
mjpg-streamerは約17年ぐらい前に開発された Softwareのためすでに本家の開発は停止しており
Volunteersが継続してメンテナンスを行ってきましたが、RaspberryPi OSの Ver.11 bullseyeでも
十分な対応が出来ていなかった。
後継の Raspi5の OS Ver.12 bookwormではまたしても動かない様なので、
使用をあきらめて ustreamerを使用してみる。
【Raspberry pi5 】

【使用するcamera】
logitech C270の USB Cameraを使用します。

RaspberryPi5に接続して lsusbで確認すると以下の表示が出てきます。
$ lsusbによるUSB Deviceの表示

【ustreamer install】
ustreamerを installする前に依存 modulesを installします。
Programは githubからもらってきます。
$ sudo apt install libevent-dev libbsd-dev libcamera-v4l2
$ sudo apt install libcairo2-dev libjpeg62-turbo-dev libpango1.0-dev libgif-dev build-essential g++
$ git clone --depth=1 https://github.com/pikvm/ustreamer
$ cd ustreamer
$ make
$
installが終わったら下記の commandを実行します。
$ cd ustreamer
$ ./ustreamer --device=/dev/video0 --host=0.0.0.0 --port=8080 -f 20
web browserで http://192.168.1.11:8080を keyinすれば下記の表示ができます。
/streamを clickすれば USB cameraの映像が出てきます。

【電源投入で自動起動する設定を入れる】 2025.06.20
電源投入で ustreamerを自動起動するには、systemdに ustreamer.serviceを作ります。
ustreamerは、1秒間の画面更新が20枚までに制限されているので、ustreamer.serviceの
ExecStart=には -f 20を入れておきます。
mjpg-streamerの fileがあったのでこれを参考にして作成します。
$ cd usr/lib/systemd/system
$ sudo nano ustreamer.service
[Unit]
Description=ustreamer Service
After=avahi-daemon.service
After=dbus.service
After=network-online.target
After=networking.service
After=remote-fs.target
[Service]
User=pi
Type=simple
WorkingDirectory=/home/pi/Downloads/ustreamer
ExecStart=/home/pi/Downloads/ustreamer/src/ustreamer.bin --host 0.0.0.0 --port 8080 -f 20
KillMode=prosess
Restart=always
[Install]
WantedBy=multi-user.target
/etcには、symbolic linkを作成します。
$ cd /etc/systemd/system/multi-user.target.wants
$ sudo ln -s /usr/lib/systemd/system/ustreamer.service ustremer.service
再起動後に ustreamerの enable, startを実施します。
$ systemctl enable ustremaer.service
$ systemctl start ustreamer.service
確認してみましょう。
$ systemctl status ustremer.service
Errorがなくて Active(running)になっていれば、
自動起動後に画面を出す事ができます。
web browserで http://192.168.1.11:8080を keyinすれば Top画面 menuができます。
/streamを clickすれば USB cameraの映像が出てきます。
【Camera Module 2 (imx219)を取り付ける】 2026.04.20
Raspi HardWareは4Bに戻して、Camera Module (imx219)を取り付けます。
ustreamer.serviceを修正して ExecStartの config部分を修正すれば、
Raspi Camera Module 2 (imx219)を使用出来る様になります。
Raspberry Pi Camera module (IMX219PQ)

Raspberry Pi camera仕様
image sensor IMX219PQ (SONY 8Mp 固定解像度)
静止画解像度 3280x2464
Frame rate 1920x1080 (H262:1080 30fps 720 60fps 640x480 90fps)
電源 15pin FFC cable 150mm
$ cd /usr/lib/systemd/system
$ sudo nano ustreamer.service
ExecStart=libcamerify /home/pi/ustreamer/src/ustreamer.bin --device=/dev/video0 --host :: --port 8080 --encoder=M2M-IMAGE workers=3 --format=YUYV -n -f 18
ctl+o 書き換えして ctl+xで終了。
次に config.txtを修正します。
$ cd /boot/firmware
$ sudo nano config.txt
camera_auto_detect=0 ←0に変更
#camera_auto_detect=1
start_x=1 ← 追加
dtoverlay=imx219 ← 追加
[all]
gpu_mem=128 ← memoryを 128に変更
dtoverlay=vc4-kms-v3d,cma-512 ← cma-512 追加
修正が済んだら再起動して Testをします。
$ raspistill -t 0 ・・・(buster)の commandはもう使用できない。
$ libcamera-hello ・・・(Bullseye)の commandはもう使用できない。
$ rpicam-hello ・・・(bookworm)で使用できる command。
rpicam-still, rpicam-vid, rpicam-jpegなども使用できます。
$ vcgencmd get_camera
supported=1 detected=0, libcamera interfaces=1 ・・・すでに camera検出せず。
$ rpicam-hello --list-camerasを打ち込めば接続している camera一覧が出てきます。
Available cameras
-----------------
0 : imx219 [3280x2464 10-bit] (/base/soc/i2c0mux/i2c@1/imx219@10)
Modes: 'SBGGR10_CSI2P' : 640x480 [30.00 fps - (65535, 65535)/65535x65535 crop]
1640x1232 [30.00 fps - (65535, 65535)/65535x65535 crop]
1920x1080 [30.00 fps - (65535, 65535)/65535x65535 crop]
3280x2464 [30.00 fps - (65535, 65535)/65535x65535 crop]
'SBGGR8' : 640x480 [30.00 fps - (65535, 65535)/65535x65535 crop]
1640x1232 [30.00 fps - (65535, 65535)/65535x65535 crop]
1920x1080 [30.00 fps - (65535, 65535)/65535x65535 crop]
3280x2464 [30.00 fps - (65535, 65535)/65535x65535 crop]
さらに詳細 configを見るには。
$ rpicam-hello --config 0
[3:50:01.211533177] [285903] INFO Camera camera_manager.cpp:330 libcamera v0.5.2+99-bfd68f78
[3:50:01.235197889] [285906] ERROR V4L2 v4l2_device.cpp:390 'imx219 10-0010': Unable to set controls: Device or resource busy
[3:50:01.246930060] [285906] INFO IPAProxy ipa_proxy.cpp:180 Using tuning file /usr/share/libcamera/ipa/rpi/vc4/imx219.json
[3:50:01.254685737] [285906] INFO Camera camera_manager.cpp:220 Adding camera '/base/soc/i2c0mux/i2c@1/imx219@10' for pipeline handler rpi/vc4
[3:50:01.254797069] [285906] INFO RPI vc4.cpp:440 Registered camera /base/soc/i2c0mux/i2c@1/imx219@10 to Unicam device /dev/media1 and ISP device /dev/media2
[3:50:01.254861902] [285906] INFO RPI pipeline_base.cpp:1107 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
Made X/EGL preview window
Made DRM preview window
Preview window unavailable
[3:50:01.294278855] [285903] INFO Camera camera.cpp:1020 Pipeline handler in use by another process
ERROR: *** failed to acquire camera /base/soc/i2c0mux/i2c@1/imx219@10 ***
Errorが出ていますが原因は libcameraの IPAManagerがモジュールディレクトリをスキャンする際に
.so で終わるファイルをすべて読み込もうとします。
v4l2-compat.so はV4L2互換ライブラリであり、IPA(カメラの自動露出やホワイトバランスなどを
制御するモジュール)ではないため、「有効な情報がない」というエラーが出力されます。
実害の有無: 多くの場合、このメッセージ自体は無害な警告に近いエラーです。
別のPCの Browserを開いて、検索行に 192.168.1.11:8080を入れれば ustreamerの Top画面が
出てきます。
Top画面の streamボタンを押せば imx219 Cameraの画像が出てきます。
trixie になると古い Hard Encoder (OMX)が廃止された影響により defaultの YUYV, MJPEGが
ないという Errorを出して、黒い画面に NO LIVE VIDEOの表示がでます。
----------------------------------------------------------------------------------------------------------------------------
