ラズパイでmjpg-streamerハマった話
ネットでやり方が乗っている方法で試してみた。
githubからmjpg-streamerをクローンしてコンパイルしてインストール
ラズパイでmjpeg-streamerする際、
USBカメラかラズパイカメラ(基盤に実装するタイプ)かでコマンドが異なる
USBカメラ⇨input_uvc.so
ラズパイカメラ⇨input_raspicam.so
初めこれに気づいてすぐブラウザで見れると思ったのが間違いでした。
以下のエラーが発生してブラウザで見れない。。。
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates
もがいた内容
ブラウザ配信試す前にカメラで静止画撮影出来ていたので物理的にカメラを認識はしていると思い以下のコマンドで念の為確認しdetected=1なのでOK
vcgencmd get_camera
supported=1 detected=1
②GPUのRAM設定を120⇨144に変えると治ったとの記事があったので以下の手順で変更144にしても258にしても治らない。
sudo raspi-config
③apt-get update,apt-get upgradeしたが治らない
④reboot(再起動)しても治らない
⑤既にカメラが有効化されていて新たにカメラを起動できないとの記載がネットにあった。これが原因っぽいがターミナル上ではコマンド待機状態にになっておりmjpgが動いている状態ではなくなっていた。まず以下のコマンドで実行中のプロセス確認
ps ax
※axは端末を持つ/持たない全てのプロセスを表示するという意味
実行中(100個くらい)の中からmjpg関連を強制終了したいがどれかわからない。
以下のコマンドで実行中のプロセスのID検索(”mj”とつくプロセスのIDを表示する)651,653がhitした。
pgrep mj
再度ps axで確認したところ以下のようになっていた。なんか動いてる。
651 ? S 0:00 raspimjpeg
653 ? Sl 0:03 raspimjpeg
これを以下のコマンドで強制終了(-9は強制終了の意味)
kill -9 651
kill -9 653
これで無事にカメラが使えるようになった。
ネット上にも大量の質問が掲載されていたが既にカメラ起動中なので2重に開けないと記載があるページは1つしかなかった。方法も書かれていなかったが原因を探すヒントになった、ありがたい。
mjpg_stream関連のフォルダの中身が編集拒否されていたのでプロセスが実行されているとの推測がたてられたのも良かった。
おかげで2000円くらいしたカメラをゴミ箱に投げ捨てなくて済んだので良かった。
問題にぶち当たってLinuxコマンド覚えるほうが確実に効率良いと思った深夜2時。