TBD: @Juergen2102 @Juergen2102 • vor 5 Minuten @dr.klipper bei einer anderen Kamera kann man sich mit diesem Befehl - v4l2-ctl -d /dev/video0 –list-ctrls - sämtliche Funktionen anzeigen lassen und dann den Fokus manuell in der Crownest.cfg einstellen, mit z.B. v4l2ctl: focus_auto=0,focus_absolute=80
Vielen Dank an Sven van Beckum von 3D Partner (https://partner-3d.de/) für das Sponsoring der Raspberry Pi V3 Cam!
CrowsNest | Kamera Typ | Stream Dienst | Hinweise |
---|---|---|---|
Version 3 | Raspberry Pi Cam V1 / V2 | ustreamer (Legacy) | Einbindung der Kamera normal über den /dev/videoXX Pfad |
Raspberry Pi Cam V3 | nicht unterstützt | ||
ArduCam | nicht unterstützt | ||
USB Kamera | ustreamer (Legacy) | Einbindung der Kamera normal über den /dev/videoXX Pfad Voraussetzung ist, dass die Kamera vom System erkannt wird |
|
Version 4 | Raspberry Pi Cam V1 / V2 | camera-streamer | siehe Raspberry Pi Cam |
Raspberry Pi Cam V3 | camera-streamer | siehe Raspberry Pi Cam | |
ArduCam | camera-streamer | siehe ArduCam | |
USB Kamera | camera-streamer | Einbindung der Kamera normal über den /dev/XX Pfad Voraussetzung ist, dass die Kamera vom System erkannt wird siehe USB Cam |
|
Version 4 (andere SBCs, X86 / X64) | ustreamer (Legacy) |
Hinweis:
Bei älteren Systemen mit Debian Buster ist ein Update auf Bullseye erforderlich!
Die größten Neuerungen in Crowsnest V4 sind folgende:
Hinweis 1
Ab MainSail OS 1.2.0 ist Crowsnest V4 vorinstalliert!
Da könnt ihr euch den ganzen Update Kram also sparen
Hinweis 2
Das Update erfolgt in der SSH Konsole und nicht in MainSail!
Crowsnest V4 lässt sich nicht direkt über den UPDATE Button in Mainsail updaten!
Wenn ihr das angeklickt habt wird Crowsnest sehr wahrscheinlich nicht sauber laufen.
Siehe dazu auch den Hinweis bei Crowsnest V3 deinstallieren.
sudo apt update && sudo apt upgrade -y
cd ~/crowsnest
git checkout legacy/v3
make uninstall
cd ~/crowsnest
git pull origin master
git checkout master
sudo make install
Do you want to add 'update manager' entry to your moonraker.conf
mit y beantworten[update_manager crowsnest]
anpassen: install_script: tools/install.sh
→ install_script: tools/pkglist.sh
sudo nano /boot/config.txt
camera_auto_detect
diesen Wert auf 1 setzen bzw. einfügen wenn nicht vorhanden → camera_auto_detect=1
start_x=1
diese Zeile auskommentieren → #start_x=1
dtoverlay=vc4-kms-v3d
wenn nicht vorhanden diese Zeile ergänzen. Ohne diese Zeile läuft keine Raspberry Pi Cam. (Siehe dazu auch https://www.raspberrypi.com/documentation/computers/camera_software.html)sudo reboot
Hinweis
Dieser Test funktioniert nur mit einem laufenden X Server (ich nutze dafür MobaXTerm)
sudo systemctl stop crowsnest.service
sudo apt install -y cheese
cheese /base/soc/i2c0mux/i2c@1/imx708@1a
sudo systemctl start crowsnest.service
Damit die Raspberry Pi Kameras korrekt in der crowsnest.conf eingetragen werden können, brauchen wir den korrekten Pfad zum Gerät.
Dies kann u.a. aus dem crowsnest Log ausgelesen werden. Einfacher geht es aber mit folgendem Befehl in der Konsole:
libcamera-vid --list-cameras
Als Ergebniss bekommt man dann folgende Ausgaben für die unterschiedlichen Raspberry Pi Cams:
pi@TestPi3:~ $ libcamera-vid --list-cameras Available cameras ----------------- 0 : ov5647 [2592x1944] (/base/soc/i2c0mux/i2c@1/ov5647@36) Modes: 'SGBRG10_CSI2P' : 640x480 [58.92 fps - (16, 0)/2560x1920 crop] 1296x972 [43.25 fps - (0, 0)/2592x1944 crop] 1920x1080 [30.62 fps - (348, 434)/1928x1080 crop] 2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]
pi@PiTest:/dev $ libcamera-vid --list-cameras Available cameras ----------------- 0 : imx219 [3280x2464] (/base/soc/i2c0mux/i2c@1/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [103.33 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [103.33 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]
pi@PiTest:~ $ libcamera-vid --list-cameras Available cameras ----------------- 0 : imx708_wide_noir [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a) Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (768, 432)/3072x1728 crop] 2304x1296 [56.03 fps - (0, 0)/4608x2592 crop] 4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]
Von dieser Ausgabe brauchen wir die Angabe die mit /base
startet. Im Falle der Pi Cam V3 bei mir z.B. /base/soc/i2c0mux/i2c@1/imx708@1a
.
Hier kann man sich auch gleich die Auflösung und mögliche FPS notieren die wir ebenfalls in der corwsnest.conf später eintragen müssen.
ArduCams sollen mit Crowsnest V4 auch laufen. Mangels Hardware konnte ich das noch nicht testen.
Die Einrichtung und Pfad Suche dürfte aber sehr ähnlich wie bei der Raspberry Pi V3 Cam sein.
Wie man den korrekten Device Pfad für USB Kameras ermittelt habe ich schon in einem eigenen Video erklärt:
Kurzfassung
v4l2-ctl --list-devices
pi@TestPi3:~ $ v4l2-ctl --list-devices ... USB Camera: USB Camera (usb-3f980000.usb-1.5): /dev/video0 /dev/video1 /dev/media4
/dev/video0
v4l2-ctl --device /dev/video0 --list-formats-ext
/dev/video0
durchaus ändern kann, bestimmt man besser noch die symbolischen Links zu dem Gerät: udevadm info --root --query=symlink --name=/dev/video0
pi@TestPi3:~ $ udevadm info --root --query=symlink --name=/dev/video0 /dev/v4l/by-path/platform-3f980000.usb-usb-0:1.5:1.0-video-index0 /dev/v4l/by-id/usb-ICT-TEK_USB_Camera_202001010001-video-index0
device: /dev/v4l/by-id/usb-ICT-TEK_USB_Camera_202001010001-video-index0
Neben dem manuellen Auslesen der Kamera Pfade / Infos gibt es auch noch das crowsnest Log. Auch hier kann man die meisten Informationen zu den Kameras finden. Der Vollständigkeit halber hier die beiden Möglichkeiten, die Informationen einzusehen:
nano ~/printer_data/logs/crowsnest.log
~/crowsnest/tools/dev-helper.sh -c
delete_log: false
→ delete_log: true
[cam 1]
. Wenn ihr mehrere Kameras angeschlossen habt, dann diesen ganzen Block erstmal so oft anlegen wie ihr Kameras habt. [cam 2]
usw. [cam ..]
Blöcken den mode umstellen von ustreamer
auf camera-streamer
.port
für jeden cam Eintrag könnt ihr auch anpassen. [cam 1]
→ port: 8080
[cam 2]
→ port: 8081
[cam 3]
→ port: 8082
rtsp_port
für jeden cam Eintrag könnt ihr auch anpassen. [cam 1]
→ port: 8554
[cam 2]
→ port: 8555
[cam 3]
→ port: 8556
enable_rtsp: true
aktivieren. RTSP kann man z.B. dafür verwenden, um mit VLC auf die Kamera Streams zuzugreifen. Hinweis: Auflösungen und FPS
Der Raspberry Pi Video De-/Encoder kann maximal eine Auflösung von 1920×1080 verarbeiten. Auch wenn ihr die Auflösung größer einstellt wird nicht mehr ausgegeben. Zudem verringern sich die möglichen Bilder pro Sekunde (FPS) wenn mehrere Kameras verwendet werden (Erfahrungen Stefan Dej : 2x 1920x1080f30 ⇒ 1920x1080f15 / 2x 1280x720f30 ⇒ 1280x720f25). Dies ist ein Hardware Limit vom Raspberry Pi.
Siehe auch die Beispiel Konfig für Crowsnest V4 am Ende dieses Beitrags.
Damit die Kameras auch in Mainsail angezeigt werden müssen die hier auch konfiguriert werden.
/webcam/webrtc
/webcam/?action=snapshot
Die RTSP Streams kann man sich (sofern in der Konfig eingeschaltet) u.a. mit VLC ansehen. Dazu braucht man die IP und den RTSP Port (der ebenfalls in der Konfig eingestellt ist).
Aufrufen kann man das dann wie folgt:
rtsp://<IP>:<PORT>/stream.h264
rtsp://<USER>:<PASSWORD>@<IP>:<PORT>/stream.h264
cd ~/crowsnest/bin/camera-streamer
git pull
cd ~/crowsnest
make buildclean
make build -j4
## LEGACY Mode ## ## Disable libcamera (interferes with ustreamer, when using raspicams) #camera_auto_detect=0 ## Enable VideoCore at boot, needed for Crowsnest (Raspicams and DSI devices). #start_x=1 ## libcamera Mode ## dtoverlay=vc4-kms-v3d # CAM V1 #dtoverlay=ov5647 # CAM V2 #dtoverlay=imx219 # CAM V3 #dtoverlay=imx708 # AutoDetect camera_auto_detect=1
#### crowsnest.conf #### This is a typical default config. #### Also used as default in mainsail / MainsailOS #### See: #### https://github.com/mainsail-crew/crowsnest/blob/master/README.md #### for details to configure to your needs. ##################################################################### #### ##### #### Information about ports and according URL's ##### #### ##### ##################################################################### #### ##### #### Port 8080 equals /webcam/?action=[stream/snapshot] ##### #### Port 8081 equals /webcam2/?action=[stream/snapshot] ##### #### Port 8082 equals /webcam3/?action=[stream/snapshot] ##### #### Port 8083 equals /webcam4/?action=[stream/snapshot] ##### #### ##### ##################################################################### [crowsnest] log_path: ~/printer_data/logs/crowsnest.log log_level: verbose # Valid Options are quiet/verbose/debug delete_log: true # Deletes log on every restart, if set to true [cam 1] mode: mjpg # mjpg/rtsp port: 8080 # Port device: /dev/video0 # See Log for available ... resolution: 640x480 # widthxheight format max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced. #custom_flags: # You can run the Stream Services with custom flags. #v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of. [cam 2] mode: mjpg # mjpg/rtsp port: 8081 # Port device: /dev/video1 # See Log for available ... resolution: 640x480 # widthxheight format max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced. #custom_flags: # You can run the Stream Services with custom flags. #v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.
#### crowsnest.conf #### This is a typical default config. #### Also used as default in mainsail / MainsailOS #### See: #### https://github.com/mainsail-crew/crowsnest/blob/master/README.md #### for details to configure to your needs. ##################################################################### #### ##### #### Information about ports and according URL's ##### #### ##### ##################################################################### #### ##### #### Port 8080 equals /webcam/?action=[stream/snapshot] ##### #### Port 8081 equals /webcam2/?action=[stream/snapshot] ##### #### Port 8082 equals /webcam3/?action=[stream/snapshot] ##### #### Port 8083 equals /webcam4/?action=[stream/snapshot] ##### #### ##### ##################################################################### #### RTSP Stream URL: ( if enabled and supported ) ##### #### rtsp://<ip>:<rtsp_port>/stream.h264 ##### ##################################################################### [crowsnest] log_path: /home/pi/printer_data/logs/crowsnest.log log_level: verbose # Valid Options are quiet/verbose/debug delete_log: true # Deletes log on every restart, if set to true no_proxy: false [cam 1] mode: camera-streamer # ustreamer - Provides mjpg and snapshots. (All devices) # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only) enable_rtsp: true # If camera-streamer is used, this enables also usage of an rtsp server rtsp_port: 8554 # Set different ports for each device! port: 8080 # Port #device: /base/soc/i2c0mux/i2c@1/imx708@1a # See Log for available ... device: /base/soc/i2c0mux/i2c@1/ov5647@36 resolution: 640x480 # widthxheight format max_fps: 25 # If Hardware Supports this it will be forced, otherwise ignored/coerced. #custom_flags: # You can run the Stream Services with custom flags. #v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of. [cam 2] mode: camera-streamer # ustreamer - Provides mjpg and snapshots. (All devices) # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only) enable_rtsp: true # If camera-streamer is used, this enables also usage of an rtsp server rtsp_port: 8555 # Set different ports for each device! port: 8081 # Port device: /dev/v4l/by-id/usb-SIT_USB2.0_Camera_SIT_USB2.0_Camera-video-index0 # See Log for available ... resolution: 640x480 # widthxheight format max_fps: 25 # If Hardware Supports this it will be forced, otherwise ignored/coerced. #custom_flags: # You can run the Stream Services with custom flags. #v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.