klipper_faq:44_-_crowsnest
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
klipper_faq:44_-_crowsnest [2023/10/10 07:12] – removed - external edit (Unknown date) 127.0.0.1 | klipper_faq:44_-_crowsnest [2023/10/20 09:10] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Crowsnest V3 ====== | ||
+ | In diesem Video teste und installeire ich crowsnest. Crowsnest ist der neue Video Streaming Service für Mainsail der gerade auf Bullseye Raspberry Pi Images deutlich mehr Performance bietet. | ||
+ | Zudem gibt es eine erste Preview auf die Weiterentwicklung von crowsnest mit WebRTC. HIer gibt es nochmals eine deutliche Leistungssteigerung bei enorm gesunkenem Datenvolumen was übertragen werden muss. | ||
+ | ===== YouTube Video #44 ===== | ||
+ | {{youtube> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Einführung ===== | ||
+ | * Warum ein neuer Streaming Dienst ? | ||
+ | * mjpg-streamer wird nicht mehr gewartet | ||
+ | * es wurde nach einer moderneren und performanteren Variante gesucht | ||
+ | * Userunfreundlich Konfiguration mit Textdateien für jede Cam | ||
+ | * Config angepasst auf Klipper Style (TOML -> https:// | ||
+ | * crowsnest basiert auf ustreamer (https:// | ||
+ | * In der Entwicklung : Version mit camera-streamer (https:// | ||
+ | |||
+ | |||
+ | ===== Vergleich Speed ===== | ||
+ | Wieviel fps (Frames per Second) erreicht werden können hängt von 2 Faktoren ab: | ||
+ | * Hardwarebeschleunigung oder Software seitige Berechnung des Videostreams | ||
+ | * Menge an Daten, die über das Netzwerk transportiert werden müssen | ||
+ | |||
+ | Der erste Punkt ist leicht abgehakt. In Bullseye ist die Hardwarebeschleunigung aktiv, in Buster nicht (aus crowsnest Sicht). | ||
+ | |||
+ | Und die Menge an Daten, die über das Netzwerk gehen kann man folgendermaßen ermitteln: \\ '' | ||
+ | |||
+ | > Das Tool muss erst mittels '' | ||
+ | |||
+ | Als Ergebnis bekommt man für einen 1920x1080@30fps (Full HD) folgendes Ergebnis (Raspberry Pi 3b): | ||
+ | |||
+ | * mjpg-Streamer -> 12MB/s und Bild stockt ewrheblich | ||
+ | * crownsnest (ustreamer) -> ~5,5MB/s bei ca. 13fps | ||
+ | * **<color # | ||
+ | Kurzum, ein Umstieg auf crowsnest und weg von mjpg-Streamer lohnt :-) | ||
+ | |||
+ | ===== " | ||
+ | Wer noch Buster als Rapbian Version verwendet, sollte darüber nachdenken, das System neu aufzusetzen. Crowsnest nutzt die Hardwarebeschleunigung M2M unter Bullseye, die in Buster aber (aufgrund des alten Kernels) gar nicht vorhanden ist. Deshalb würde unter Buster und crowsnest alls von der CPU berechnet, was den Videostream betrifft. Erst in Bullseye wird die Hardwarebeschleunigung genutzt. | ||
+ | |||
+ | Die verwendete Version könnt ihr so rausfinden: | ||
+ | * Variante 1 - Machine Seite in Mainsail \\ {{youtube: | ||
+ | * Variante 2 - Linux Konsole \\ '' | ||
+ | ===== Installation ===== | ||
+ | |||
+ | ==== Hinweis MainSailOS ==== | ||
+ | Hier ist alles schon komplett vorbereitet im Image. Es ist also keine extra Installation nötig. | ||
+ | |||
+ | crowsnest muss dann installiert werden, wenn man ein normales Raspberry Pi Image verwendet als Basis. | ||
+ | |||
+ | ==== über kiauh ==== | ||
+ | > kiauh muss natürlich auf dem System eingerichtet sein ! | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * In den Menüs folgende Option wählen | ||
+ | * 1 -> Install | ||
+ | * 10 -> crowsnest | ||
+ | |||
+ | ==== manuell ==== | ||
+ | basierend auf: https:// | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | ===== Log lesen (Cams) ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Wir müssen folgende Punkte aus dem Log für jede Kamera herausfinden: | ||
+ | |||
+ | * den Device-Link (/ | ||
+ | * die Auflösung, die wir nutzen möchten (Bsp: 1920x1080) | ||
+ | * die maximale Framerate (fps) (Bsp: 30) | ||
+ | |||
+ | > Bei mehreren Kameras halt für alle Kameras die Infos ermitteln. | ||
+ | |||
+ | < | ||
+ | [03/03/23 18:16:37] crowsnest: INFO: Detect available Devices | ||
+ | [03/03/23 18:16:37] crowsnest: INFO: Found 1 total available Device(s) | ||
+ | [03/03/23 18:16:37] crowsnest: INFO: Found 1 available camera(s) | ||
+ | [03/03/23 18:16:37] crowsnest: / | ||
+ | [03/03/23 18:16:37] crowsnest: Supported Formats: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:37] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:38] crowsnest: | ||
+ | [03/03/23 18:16:39] crowsnest: | ||
+ | </ | ||
+ | ===== Kamera einrichten ===== | ||
+ | |||
+ | Die Settings werden in der '' | ||
+ | |||
+ | Beispiel mit den ermittelten Daten aus dem crowsnest.log: | ||
+ | < | ||
+ | [cam BedCam] | ||
+ | mode: mjpg # mjpg/rtsp | ||
+ | port: 8080 # Port | ||
+ | device: / | ||
+ | resolution: 1920x1080 | ||
+ | max_fps: 30 | ||
+ | </ | ||
+ | |||
+ | Anschließend muss in Mainsail noch eine Webcam hinzugefügt werden über die Settings (rechts oben die 2 Zahnräder). | ||
+ | * WEBCAMS auswählen auf der linken Seite | ||
+ | * dann **Add Webcam** oder **Webcam hinzufügen** | ||
+ | * {{youtube: | ||
+ | * mit **Update Webcam** bestätigen | ||
+ | |||
+ | ==== Service wählen ==== | ||
+ | * **MJPEG-Streamer** -> bei guter Verbindung (LAN oder gute Wifi Verbindung) \\ funktioniert __nicht__ auf Safari | ||
+ | * **Adaptive MJPEG-Streamer (experimentell)** -> ist gut, wenn man eine schlechte Verbindung hat | ||
+ | * **UV4L-MJPEG** -> kann bei lang offenen Streames eine großes Delay haben | ||
+ | |||
+ | Der Adaptive ist als Default sicher nicht die schlechteste Wahl :-) | ||
+ | ===== v4l2ctl: extra Parameter ===== | ||
+ | |||
+ | siehe https:// | ||
+ | |||
+ | * Controls aus dem Log ermitteln \\ '' | ||
+ | * Beispiel : \\ < | ||
+ | [03/03/23 18:16:39] crowsnest: Supported Controls: | ||
+ | [03/03/23 18:16:39] crowsnest: | ||
+ | [03/03/23 18:16:39] crowsnest: | ||
+ | [03/03/23 18:16:39] crowsnest: | ||
+ | ... | ||
+ | </ | ||
+ | * Control Element testen mittels (Beispiel) \\ '' | ||
+ | * Control Element in der '' | ||
+ | * mehrere Elemente durch , trennen ! | ||
+ | |||
+ | ===== Multicam Setup ===== | ||
+ | |||
+ | Beispiel: | ||
+ | < | ||
+ | #### crowsnest.conf | ||
+ | #### This is a typical default config. | ||
+ | #### Also used as default in mainsail / MainsailOS | ||
+ | #### See: | ||
+ | #### https:// | ||
+ | #### for details to configure to your needs. | ||
+ | |||
+ | |||
+ | ##################################################################### | ||
+ | #### ##### | ||
+ | #### Information about ports and according URL' | ||
+ | #### ##### | ||
+ | ##################################################################### | ||
+ | #### ##### | ||
+ | #### Port 8080 equals / | ||
+ | #### Port 8081 equals / | ||
+ | #### Port 8082 equals / | ||
+ | #### Port 8083 equals / | ||
+ | #### ##### | ||
+ | ##################################################################### | ||
+ | |||
+ | |||
+ | [crowsnest] | ||
+ | log_path: ~/ | ||
+ | log_level: verbose | ||
+ | delete_log: false # Deletes log on every restart, if set to true | ||
+ | |||
+ | [cam 1] | ||
+ | mode: mjpg # mjpg/rtsp | ||
+ | port: 8080 # Port | ||
+ | device: / | ||
+ | resolution: 1280x720 # 1920x1080 | ||
+ | max_fps: 30 # If Hardware Supports this it will be forced, otherwise ignored/ | ||
+ | |||
+ | [cam 2] | ||
+ | mode: mjpg # mjpg/rtsp | ||
+ | port: 8081 # Port | ||
+ | device: / | ||
+ | resolution: 1280x720 | ||
+ | max_fps: 10 # If Hardware Supports this it will be forced, otherwise ignored/ | ||
+ | </ | ||
+ | |||
+ | ===== Preview: webrtc ===== | ||
+ | |||
+ | **Hinweise: | ||
+ | * Mainsail / crowsnest mit WebRTC Unterstützung befindet sich noch in der Entwicklung. Deshalb wird es hier dazu auch keine detaillierte Anleitung geben. | ||
+ | * Wenn es dann zur Verfügung steht, sollte man den Raspberry Pi kühlen - vor allem von mehr als eine Kamera angeschlossen wird! | ||
+ | * mode muss in der Konfiguration auf " | ||
+ | |||
+ | <nodisp group> | ||
+ | * Basis : MainsailOS | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Mainsail Update \\ {{ youtube: | ||
+ | |||
+ | * camera_auto_detect -> true | ||
+ | |||
+ | **Beispiel crowsnest Config** | ||
+ | |||
+ | < | ||
+ | [cam nozzle] | ||
+ | mode: multi | ||
+ | port: 8080 | ||
+ | device: / | ||
+ | resolution: 1280x720 | ||
+ | max_fps: 25 | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Howto : Deinstallation mjpeg-streamer ===== | ||
+ | Die folgenden Anleitungen sind nur als Info hier abgelegt. Das wird nur dann benötigt wenn bei der normalen Deinstallation etwas schief geht. In den meisten Fällen wird man aber kaum mjpeg-streamer selber deinstallieren müssen. | ||
+ | |||
+ | ==== kiauh ==== | ||
+ | |||
+ | > **Hinweis** \\ Der crowsnest Installer deinstalliert automatisch den mjpeg-streamer! \\ Ein manueller Eingriff ist also nur im Fehlerfall nötig. | ||
+ | |||
+ | < | ||
+ | / | ||
+ | | | ||
+ | | Klipper Installation And Update Helper | ||
+ | | | ||
+ | \=======================================================/ | ||
+ | / | ||
+ | | | ||
+ | |-------------------------------------------------------| | ||
+ | | INFO: Configurations and/or any backups will be kept! | | ||
+ | |-------------------------------------------------------| | ||
+ | | Firmware & API: | 3rd Party Webinterface: | ||
+ | | 1) [Klipper] | ||
+ | | 2) [Moonraker] | ||
+ | | | Webcam Streamer: | ||
+ | | Klipper Webinterface: | ||
+ | | 3) [Mainsail] | ||
+ | | 4) [Mainsail-Config] | ||
+ | | 5) [Fluidd] | ||
+ | | 6) [Fluidd-Config] | ||
+ | | | 12) [Telegram Bot] | | ||
+ | | Touchscreen GUI: | 13) [Obico for Klipper] | ||
+ | | 7) [KlipperScreen] | ||
+ | |-------------------------------------------------------| | ||
+ | | B) « Back | | ||
+ | \=======================================================/ | ||
+ | </ | ||
+ | |||
+ | ==== manuell ==== | ||
+ | |||
+ | > **Hinweis** \\ Der crowsnest Installer deinstalliert automatisch den mjpeg-streamer! \\ Ein manueller Eingriff ist also nur im Fehlerfall nötig. | ||
+ | |||
+ | * läuft der Service noch ? \\ '' | ||
+ | pi@Make-Voron2: | ||
+ | ● webcamd.service - the MainsailOS webcam daemon (based on OctoPi) with the user specified config | ||
+ | | ||
+ | | ||
+ | Main PID: 533 (mjpg_streamer) | ||
+ | Tasks: 3 (limit: 3596) | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ggf. das Logfile löschen \\ '' | ||
+ | |||
+ | ===== Links ===== | ||
+ | * crowsnest - Webcam Service for multiple Cams \\ https:// | ||
+ | * µStreamer - Lightweight and fast MJPEG-HTTP streamer \\ https:// | ||
+ | * camera-streamer - High-performance low-latency camera streamer for Raspberry PI's \\ https:// | ||
+ | * kiauh - Klipper Installation And Update Helper \\ https:// |