@hososhamo

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Raspberry Pi 4 でmjpg-streamerが使用できない

このような分野は入門レベルなので用語等間違っていたら申し訳ございません。

Raspberry Pi 4 でmjpg-streamerが使用できません。

解決にあたり足りない情報がありましたら、教えていただきたいです。

■使用機械

(1).Raspberry Pi 4B(RAM 8GB)
(2).Raspberry Pi Camera V3(https://www.amazon.co.jp/dp/B0CJN53SDD?th=1)
(3).有線キーボード、マウス

■OSのバージョンなど

使用イメージファイル:2024-03-12-raspios-bullseye-arm64.img
(https://downloads.raspberrypi.com/raspios_oldstable_arm64/images/raspios_oldstable_arm64-2024-03-12/)
ホスト名、ユーザー名:hoge

hoge@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

hoge@raspberrypi:~ $ uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

■設定など

sudo apt updatesudo apt upgradeでパッケージの更新をしている
sudo raspi-configでカメラを有効にする
sudo nano /boot/config.txtdtoverlay=imx708を追記している

■行き詰まっているポイント

mjpg-streamerをインストール後、使用方法に沿ってコマンドmjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 60x480× -f 30 -q 10'を使用すると以下が表示されます。

hoge@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 60x480× -f 30 -q 10'
MJPG Streamer Version: git rev: 8895ed4f825846fd27c468fbe2139bf69e09d684
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 60 x 480
 i: Frames Per Second.: 30
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
 o: www-folder-path......: ./www/
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled
Unable to start capture: Invalid argument
 i: Can't enable video in first time
 i: cleaning up resources allocated by input thread

この最終行3行分

Unable to start capture: Invalid argument
 i: Can't enable video in first time
 i: cleaning up resources allocated by input thread

というエラー?が解決できず、ブラウザから配信を見られない状態です。
何かヒントはないでしょうか。

■参考にしたサイト①

・Raspberry PiでMJPG-Streamerを使って監視カメラを作ってみよう
https://ponkichi.blog/mjpg-streamer/
※ インストール後の使用コマンド

mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_raspicam.so -x 1920 -y 1080 -fps 30 -q 10'

だと「input_raspicam.so」ファイルが存在していないとエラーが出るため以下のコマンドで実行し、エラー発生。

mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 60x480× -f 30 -q 10'

■参考にしたサイト②

・libjpeg8-devではなくて、libjpeg62-turbo-devをインストールしたらできた。という記事
[Bullseye can't install libjpeg8-dev - substituting libjpeg62-turbo-dev succeeds #386]
https://github.com/jacksonliam/mjpg-streamer/issues/386

こちらも最終的に上記と同じエラー発生。
以下、インストールから起動コマンドまでです。

sudo apt install -y git cmake libjpeg62-turbo-dev

hoge@raspberrypi:~ $ sudo apt install -y git cmake libjpeg62-turbo-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
git はすでに最新バージョン (1:2.30.2-1+deb11u2) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libfuse2 libwpe-1.0-1 libwpebackend-fdo-1.0-1
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  cmake-data libjsoncpp24 librhash0
提案パッケージ:
  cmake-doc ninja-build
以下のパッケージが新たにインストールされます:
  cmake cmake-data libjpeg62-turbo-dev libjsoncpp24 librhash0
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
5,853 kB のアーカイブを取得する必要があります。
この操作後に追加で 30.5 MB のディスク容量が消費されます。
取得:1 http://deb.debian.org/debian bullseye/main arm64 libjsoncpp24 arm64 1.9.4                                                                                                                     -4 [72.5 kB]
取得:2 http://deb.debian.org/debian bullseye/main arm64 librhash0 arm64 1.4.1-2                                                                                                                      [127 kB]
取得:3 http://deb.debian.org/debian bullseye/main arm64 libjpeg62-turbo-dev arm6                                                                                                                     4 1:2.0.6-4 [255 kB]
取得:4 http://archive.raspberrypi.org/debian bullseye/main arm64 cmake-data all                                                                                                                      3.18.4-2+rpt1+rpi1+deb11u1 [1,726 kB]
取得:5 http://archive.raspberrypi.org/debian bullseye/main arm64 cmake arm64 3.1                                                                                                                     8.4-2+rpt1+rpi1+deb11u1 [3,673 kB]
5,853 kB を 3秒 で取得しました (1,680 kB/s)
以前に未選択のパッケージ cmake-data を選択しています。
(データベースを読み込んでいます ... 現在 97883 個のファイルとディレクトリがインストールされています。)
.../cmake-data_3.18.4-2+rpt1+rpi1+deb11u1_all.deb を展開する準備をしています ...
cmake-data (3.18.4-2+rpt1+rpi1+deb11u1) を展開しています...
以前に未選択のパッケージ libjsoncpp24:arm64 を選択しています。
.../libjsoncpp24_1.9.4-4_arm64.deb を展開する準備をしています ...
libjsoncpp24:arm64 (1.9.4-4) を展開しています...
以前に未選択のパッケージ librhash0:arm64 を選択しています。
.../librhash0_1.4.1-2_arm64.deb を展開する準備をしています ...
librhash0:arm64 (1.4.1-2) を展開しています...
以前に未選択のパッケージ cmake を選択しています。
.../cmake_3.18.4-2+rpt1+rpi1+deb11u1_arm64.deb を展開する準備をしています ...
cmake (3.18.4-2+rpt1+rpi1+deb11u1) を展開しています...
以前に未選択のパッケージ libjpeg62-turbo-dev:arm64 を選択しています。
.../libjpeg62-turbo-dev_1%3a2.0.6-4_arm64.deb を展開する準備をしています ...
libjpeg62-turbo-dev:arm64 (1:2.0.6-4) を展開しています...
libjpeg62-turbo-dev:arm64 (1:2.0.6-4) を設定しています ...
libjsoncpp24:arm64 (1.9.4-4) を設定しています ...
librhash0:arm64 (1.4.1-2) を設定しています ...
cmake-data (3.18.4-2+rpt1+rpi1+deb11u1) を設定しています ...
cmake (3.18.4-2+rpt1+rpi1+deb11u1) を設定しています ...
man-db (2.9.4-2) のトリガを処理しています ...
libc-bin (2.31-13+rpt2+rpi1+deb11u10) のトリガを処理しています ...

sudo apt-get install gcc g++

hoge@raspberrypi:~ $ sudo apt-get install gcc g++
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
g++ はすでに最新バージョン (4:10.2.1-1) です。
g++ は手動でインストールしたと設定されました。
gcc はすでに最新バージョン (4:10.2.1-1) です。
gcc は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libfuse2 libwpe-1.0-1 libwpebackend-fdo-1.0-1
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

git clone https://github.com/neuralassembly/mjpg-streamer.git

hoge@raspberrypi:~ $ git clone https://github.com/neuralassembly/mjpg-streamer.git
Cloning into 'mjpg-streamer'...
remote: Enumerating objects: 2970, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 2970 (delta 0), reused 1 (delta 0), pack-reused 2964
Receiving objects: 100% (2970/2970), 3.48 MiB | 15.42 MiB/s, done.
Resolving deltas: 100% (1885/1885), done.

cd mjpg-streamer/mjpg-streamer-experimental
make

hoge@raspberrypi:~/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 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMAKE_BUILD_TYPE = Release
-- Looking for include file sys/inotify.h
-- Looking for include file sys/inotify.h - found
CMake Warning at plugins/input_opencv/CMakeLists.txt:4 (find_package):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.


CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (PkgConfig)
  does not match the name of the calling package (Gphoto2).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  /usr/share/cmake-3.18/Modules/FindPkgConfig.cmake:59 (find_package_handle_standard_args)
  cmake/FindGphoto2.cmake:21 (include)
  plugins/input_ptp2/CMakeLists.txt:2 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'libgphoto2'
--   No package 'libgphoto2' found
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (GPHOTO2)
  does not match the name of the calling package (Gphoto2).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindGphoto2.cmake:44 (find_package_handle_standard_args)
  plugins/input_ptp2/CMakeLists.txt:2 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Could NOT find GPHOTO2 (missing: GPHOTO2_LIBRARY GPHOTO2_INCLUDE_DIR)
-- Looking for include file linux/videodev2.h
-- Looking for include file linux/videodev2.h - found
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)
-- Could NOT find protobuf-c (missing: PROTOBUF_C_LIBRARY PROTOBUF_C_INCLUDE_DIR)
-- The following features have been enabled:

 * PLUGIN_INPUT_FILE, File input plugin
 * PLUGIN_INPUT_HTTP, HTTP input proxy plugin
 * PLUGIN_INPUT_UVC, Video 4 Linux input plugin
 * PLUGIN_OUTPUT_FILE, File output plugin
 * PLUGIN_OUTPUT_HTTP, HTTP server output plugin
 * PLUGIN_OUTPUT_RTSP, RTSP output plugin
 * PLUGIN_OUTPUT_UDP, UDP output stream plugin

-- The following OPTIONAL packages have been found:

 * Threads

-- The following features have been disabled:

 * WXP_COMPAT, Enable compatibility with WebcamXP
 * PLUGIN_INPUT_OPENCV, OpenCV input plugin (unmet dependencies)
 * PLUGIN_INPUT_RASPICAM, Raspberry Pi input camera plugin (unmet dependencies)
 * PLUGIN_INPUT_PTP2, PTP2 input plugin (unmet dependencies)
 * ENABLE_HTTP_MANAGEMENT, Enable experimental HTTP management option
 * PLUGIN_OUTPUT_VIEWER, SDL output viewer plugin (unmet dependencies)
 * PLUGIN_OUTPUT_ZMQSERVER, ZMQ Server output plugin (unmet dependencies)

-- The following OPTIONAL packages have not been found:

 * OpenCV
 * Gphoto2
 * SDL

-- Configuring done
-- Generating done
-- Build files have been written to: /home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build
make -C _build
make[1]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[2]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target mjpg_streamer
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[  4%] Building C object CMakeFiles/mjpg_streamer.dir/mjpg_streamer.c.o
[  8%] Building C object CMakeFiles/mjpg_streamer.dir/utils.c.o
[ 13%] Linking C executable mjpg_streamer
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 13%] Built target mjpg_streamer
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target input_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 17%] Building C object plugins/input_file/CMakeFiles/input_file.dir/input_file.c.o
[ 21%] Linking C shared library input_file.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 21%] Built target input_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target input_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 26%] Building C object plugins/input_http/CMakeFiles/input_http.dir/input_http.c.o
[ 30%] Building C object plugins/input_http/CMakeFiles/input_http.dir/misc.c.o
[ 34%] Building C object plugins/input_http/CMakeFiles/input_http.dir/mjpg-proxy.c.o
[ 39%] Linking C shared library input_http.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 39%] Built target input_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target input_uvc
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 43%] Building C object plugins/input_uvc/CMakeFiles/input_uvc.dir/dynctrl.c.o
[ 47%] Building C object plugins/input_uvc/CMakeFiles/input_uvc.dir/input_uvc.c.o
[ 52%] Building C object plugins/input_uvc/CMakeFiles/input_uvc.dir/jpeg_utils.c.o
[ 56%] Building C object plugins/input_uvc/CMakeFiles/input_uvc.dir/v4l2uvc.c.o
[ 60%] Linking C shared library input_uvc.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 60%] Built target input_uvc
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target output_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 65%] Building C object plugins/output_file/CMakeFiles/output_file.dir/output_file.c.o
[ 69%] Linking C shared library output_file.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 69%] Built target output_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target output_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 73%] Building C object plugins/output_http/CMakeFiles/output_http.dir/httpd.c.o
[ 78%] Building C object plugins/output_http/CMakeFiles/output_http.dir/output_http.c.o
[ 82%] Linking C shared library output_http.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 82%] Built target output_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target output_rtsp
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 86%] Building C object plugins/output_rtsp/CMakeFiles/output_rtsp.dir/output_rtsp.c.o
[ 91%] Linking C shared library output_rtsp.so
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 91%] Built target output_rtsp
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
Scanning dependencies of target output_udp
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 95%] 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/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[100%] Built target output_udp
make[2]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[1]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます

sudo make install

hoge@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ sudo make install
make -C _build install
make[1]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[2]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 13%] Built target mjpg_streamer
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 21%] Built target input_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 39%] Built target input_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 60%] Built target input_uvc
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 69%] Built target output_file
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 82%] Built target output_http
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[ 91%] Built target output_rtsp
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
make[3]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
[100%] Built target output_udp
make[2]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/mjpg_streamer
-- Set runtime path of "/usr/local/bin/mjpg_streamer" to "/usr/local/lib/mjpg-streamer"
-- Installing: /usr/local/share/mjpg-streamer/www
-- Installing: /usr/local/share/mjpg-streamer/www/sidebarbg.gif
-- Installing: /usr/local/share/mjpg-streamer/www/stream.html
-- Installing: /usr/local/share/mjpg-streamer/www/style.css
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.ui.widget.min.js
-- Installing: /usr/local/share/mjpg-streamer/www/rotateicons.png
-- Installing: /usr/local/share/mjpg-streamer/www/java_simple.html
-- Installing: /usr/local/share/mjpg-streamer/www/stream_simple.html
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.ui.custom.css
-- Installing: /usr/local/share/mjpg-streamer/www/LICENSE.txt
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.ui.tabs.min.js
-- Installing: /usr/local/share/mjpg-streamer/www/javascript.html
-- Installing: /usr/local/share/mjpg-streamer/www/index.html
-- Installing: /usr/local/share/mjpg-streamer/www/favicon.png
-- Installing: /usr/local/share/mjpg-streamer/www/control.htm
-- Installing: /usr/local/share/mjpg-streamer/www/javascript_motiondetection.html
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.ui.core.min.js
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.rotate.js
-- Installing: /usr/local/share/mjpg-streamer/www/JQuerySpinBtn.js
-- Installing: /usr/local/share/mjpg-streamer/www/example.jpg
-- Installing: /usr/local/share/mjpg-streamer/www/javascript_simple.html
-- Installing: /usr/local/share/mjpg-streamer/www/favicon.ico
-- Installing: /usr/local/share/mjpg-streamer/www/spinbtn_updn.gif
-- Installing: /usr/local/share/mjpg-streamer/www/jquery.js
-- Installing: /usr/local/share/mjpg-streamer/www/static.html
-- Installing: /usr/local/share/mjpg-streamer/www/fix.css
-- Installing: /usr/local/share/mjpg-streamer/www/static_simple.html
-- Installing: /usr/local/share/mjpg-streamer/www/JQuerySpinBtn.css
-- Installing: /usr/local/share/mjpg-streamer/www/functions.js
-- Installing: /usr/local/share/mjpg-streamer/www/bodybg.gif
-- Installing: /usr/local/share/mjpg-streamer/www/java_control.html
-- Installing: /usr/local/share/mjpg-streamer/www/videolan.html
-- Installing: /usr/local/share/mjpg-streamer/www/java.html
-- Installing: /usr/local/share/mjpg-streamer/www/cambozola.jar
-- Installing: /usr/local/lib/mjpg-streamer/input_file.so
-- Installing: /usr/local/lib/mjpg-streamer/input_http.so
-- Installing: /usr/local/lib/mjpg-streamer/input_uvc.so
-- Installing: /usr/local/lib/mjpg-streamer/output_file.so
-- Installing: /usr/local/lib/mjpg-streamer/output_http.so
-- Installing: /usr/local/lib/mjpg-streamer/output_rtsp.so
-- Installing: /usr/local/lib/mjpg-streamer/output_udp.so
make[1]: ディレクトリ '/home/hoge/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます

mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_raspicam.so -x 640 -y 480 -fps 30 -q 10'だと、input_raspicam.soが存在しないとのこと。

hoge@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_raspicam.so -x 640 -y 480 -fps 30 -q 10'
MJPG Streamer Version: git rev: 8895ed4f825846fd27c468fbe2139bf69e09d684
ERROR: could not find input plugin
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: ./input_raspicam.so: cannot open shared object file: No such file or directory

mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -x 640 -y 480 -fps 30 -q 10'だと、同じくエラーが発生。

hoge@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -r 60x480× -f 30 -q 10'
MJPG Streamer Version: git rev: 8895ed4f825846fd27c468fbe2139bf69e09d684
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 60 x 480
 i: Frames Per Second.: 30
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
 i: Could not obtain the requested pixelformat: MJPG , driver gave us: YUYV
    ... will try to handle this by checking against supported formats.
    ... Falling back to YUV mode (consider using -yuv option). Note that this requires much more CPU power
Unable to query that the FPS change is supported
: Inappropriate ioctl for device
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
 o: www-folder-path......: ./www/
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled
Unable to start capture: Invalid argument
 i: Can't enable video in first time
 i: cleaning up resources allocated by input thread
1 likes

2Answer

V3カメラを持っていないので、どこまで再現できるか分かりませんが、上の手順を追ってみます。

(2).Raspberry Pi Camera V3(https://amzn.asia/d/06PIBWE8)

リンクがおかしいので、↓ こちらにもリンクしておきます。

sudo apt-get install gcc g++

gcc g++をインストールしたのは、どこの手順に従ったのでしょうか?

1Like

Comments

  1. Invalid Argumentsとのことなので、一つ引っかかったのが「-i './input_uvc.so -r 60x480× -f 30 -q 10'」の「60x480×」のところが、正常な解像度とみなされていないかもしれません。

    ただ、後ろのほうでは「mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_uvc.so -x 640 -y 480 -fps 30 -q 10'だと、同じくエラーが発生。」と書いてあるように-xと-yで指定してるように見えますが、どちらのコマンドで走らせましたか?

まだ調査中ですが、中間報告です。
まず、自分の環境は以下のとおりで、@hososhamo さんと同じに見えます。

pi44@raspberrypi44:~ $ cat /sys/firmware/devicetree/base/model
Raspberry Pi 4 Model B Rev 1.5

pi44@raspberrypi44:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

pi44@raspberrypi44:~ $ uname -a
Linux raspberrypi44 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

現時点で、@hososhamo さんと違う点は、
1.libjpeg8-devがインストール不可で、代わりにlibjpeg-devをインストールすると、結果的にlibjpeg62-turbo-devもインストールされました。

一部省略
pi44@raspberrypi44:~ $ sudo apt install cmake libjpeg8-dev -y
パッケージ libjpeg8-dev は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。
しかし、以下のパッケージが置き換えます:
  libjpeg62-turbo-dev:armhf libjpeg62-turbo-dev
E: パッケージ 'libjpeg8-dev' にはインストール候補がありません

pi44@raspberrypi44:~ $ sudo apt install cmake libjpeg-dev -y
以下の追加パッケージがインストールされます:
  cmake-data libjpeg62-turbo-dev libjsoncpp24 librhash0

2.その後、makeしたが、その中でplugins/input_raspicamをビルドするログが見当たらないため、ググって、次のsedコマンドを実行。

https://github.com/jacksonliam/mjpg-streamer/issues/395
$ sed -i 's_/opt/vc_/usr_g' ./plugins/input_raspicam/CMakeLists.txt

再度、makeすると、plugins/input_raspicamがビルドされ、コンパイルでいくつかのワーニングが出るが先に進み、libmmal_core.oが見つからないところで終わる。

Scanning dependencies of target input_raspicam
make[3]: ディレクトリ '/home/pi44/mjpg-streamer/mjpg-streamer-experimental/_build' から出ます
make[3]: ディレクトリ '/home/pi44/mjpg-streamer/mjpg-streamer-experimental/_build' に入ります
[ 40%] Building C object plugins/input_raspicam/CMakeFiles/input_raspicam.dir/input_raspicam.c.o
In file included from /home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:51:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_saturation’:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:762:32: warning: implicit declaration of function ‘mmal_port_parameter_set_rational’; did you mean ‘mmal_port_parameter_set’? [-Wimplicit-function-declaration]
  762 |       ret = mmal_status_to_int(mmal_port_parameter_set_rational(camera->control, MMAL_PARAMETER_SATURATION, value));
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                mmal_port_parameter_set
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_ISO’:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:864:30: warning: implicit declaration of function ‘mmal_port_parameter_set_uint32’; did you mean ‘mmal_port_parameter_set’? [-Wimplicit-function-declaration]
  864 |    return mmal_status_to_int(mmal_port_parameter_set_uint32(camera->control, MMAL_PARAMETER_ISO, ISO));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                              mmal_port_parameter_set
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_video_stabilisation’:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:899:30: warning: implicit declaration of function ‘mmal_port_parameter_set_boolean’; did you mean ‘mmal_port_parameter_set’? [-Wimplicit-function-declaration]
  899 |    return mmal_status_to_int(mmal_port_parameter_set_boolean(camera->control, MMAL_PARAMETER_VIDEO_STABILISATION, vstabilisation));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                              mmal_port_parameter_set
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c: In function ‘raspicamcontrol_set_exposure_compensation’:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/RaspiCamControl.c:913:30: warning: implicit declaration of function ‘mmal_port_parameter_set_int32’; did you mean ‘mmal_port_parameter_set’? [-Wimplicit-function-declaration]
  913 |    return mmal_status_to_int(mmal_port_parameter_set_int32(camera->control, MMAL_PARAMETER_EXPOSURE_COMP , exp_comp));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                              mmal_port_parameter_set
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c: In function ‘worker_thread’:
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:885:10: warning: implicit declaration of function ‘mmal_port_pool_create’; did you mean ‘mmal_pool_create’? [-Wimplicit-function-declaration]
  885 |   pool = mmal_port_pool_create(encoder_output, encoder_output->buffer_num, encoder_output->buffer_size);
      |          ^~~~~~~~~~~~~~~~~~~~~
      |          mmal_pool_create
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:885:8: warning: assignment to ‘MMAL_POOL_T *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  885 |   pool = mmal_port_pool_create(encoder_output, encoder_output->buffer_num, encoder_output->buffer_size);
      |        ^
/home/pi44/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c:1057:5: warning: implicit declaration of function ‘mmal_port_pool_destroy’; did you mean ‘mmal_pool_destroy’? [-Wimplicit-function-declaration]
 1057 |     mmal_port_pool_destroy(encoder->output[0], pool);
      |     ^~~~~~~~~~~~~~~~~~~~~~
      |     mmal_pool_destroy
[ 44%] Linking C shared library input_raspicam.so
/usr/bin/ld: -lmmal_core が見つかりません
/usr/bin/ld: -lmmal_util が見つかりません
/usr/bin/ld: -lmmal_vc_client が見つかりません
collect2: error: ld returned 1 exit status
make[3]: *** [plugins/input_raspicam/CMakeFiles/input_raspicam.dir/build.make:103: plugins/input_raspicam/input_raspicam.so] エラー 1

現時点で、これらのライブラリが見つからず、インストールorビルド方法を調べているところです。
解決すれば、input_raspicam.soが出来上がるはずで、先に進めると思います。

0Like

Comments

  1. libmmal_core.soがビルドできたので、input_raspicam.so も無事にビルドできました。
    しかし、mjpg_streamerを起動すると、その先でエラーが発生しました。

    pi44@raspberrypi44:~/mjpg-streamer/mjpg-streamer-experimental $ mjpg_streamer -o 'output_http.so -w ./www -p 8080' -i 'input_raspicam.so -x 1920 -y 1080 -fps 30 -q 10'
    MJPG Streamer Version: git rev: 8895ed4f825846fd27c468fbe2139bf69e09d684
     i: fps.............: 30
     i: resolution........: 1920 x 1080
     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........: 8080
     o: HTTP Listen Address..: (null)
     o: username:password....: disabled
     o: commands.............: enabled
     i: Starting Camera
    mmal: mmal_component_create_core: could not find component 'vc.ril.camera'
    error create camera
    

    ↓ こちらのブログによると、最新のbullseyeではmjpg_streamerは動かない、とのことなので、これ以上の調査は止めました。(2024.6.8の記事ですから現時点の最新情報だと思います。)

    neuralassembly/mjpg-streamerは、最後の更新から2年を経過しているので、その間に bullseye側が何度も更新してしまい、どこかの時点で動かなくなってしまった様です。

  2. @hososhamo

    Questioner

    お返事が遅くなり申し訳ありません。
    実機を用いて、細かく検証してくださりありがとうございます。
    最新の環境ではどうにもできないということが分かったことは非常に助かりました。
    残念ですが、違う方法を試みてみます。

  3. 自分は数年前に、Buster (Debian 10) で ffmpeg+rtmp+nginx を使った音声付き監視カメラを作成し、今でも現役で稼働しています。

    最新OSにこだわらなければ、旧OSで mjpg_streamer を使うことも、選択肢の一つだと思います。

    もし よろしければ、当Q&Aをクローズしていただければと思います。

  4. @hososhamo

    Questioner

    助言くださりありがとうございます。

    クローズいたします

Your answer might help someone💌