Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Gibt es irgendwie die Möglichkeit den RTSP Stream von den Cams die in die SS eingebunden sind als MJPEG wieder ins netz zu schicken?
Ich kenne diese geniale Funktion von MotionEyeOs und würde gerne meinen Raspberry einstampfen und alles die Synology erledigen lassen...
Mit einem Rechtsklick auf die Kamera kann der rtsp link abgerufen werden. Ob ein MJPEG Stream verfügbar ist kommt auf die Kamera an und ob diese einen 2. oder 3. Stream über rtsp und dem Format bereitstellt.
Also die Rechte Maustaste Funktion fällt leider aus.. meine Cams können keinen MJPEG liefern. Deshalb habe ich die MotionEyeOs genutzt.
Ich habe die 215j die total unterfordert ist und meist eine cpu last von 3-10% hat... vielleicht ist die docker Variante doch eine Möglichkeit... Muss mich mal einlesen, habe leider davon keine Ahnung..
Weil ich den MJPEG Stream in der FTUI von FHEM darstellen möchte. Dort geht auf einem Tablet leider nur MJPEG, sonst wäre es ja schon längst erledigt...
Es kommt aber nur ca. alle drei, vier Sekunden ein Bild. Flüssig geht also anders.
Die Info zur Camera-ID erhält man mit einem Rechtsklick auf die entsprechende Kamera in der Surveillance Station (roter Kasten).
Wichtig: am Ende des Strings und hinter "&StmKey=" muss jeweils ein "%22" stehen.
Hätte aber noch mal eine ergänzende Frage an die Experten. Wie kann ich statt eines Streams einen Snapshot als jpg erzeugen? Irgendwie finde ich da die benötigten API-Befehle nicht. Da hat Synology wohl zwischenzeitlich was geändert, oder?
Verstehe die Frage nicht. Mit deinem oben genannten Link wird doch schon ein MJPEG Stream erzeugt.
Ein reines jpeg Bild kann nicht über rtp übertragen werden!
Nun ja, Hintergrund meiner Frage ist der, dass ich mir einen Snapshot der Kamera per Pushover-Nachricht zuschicken lassen möchte. Es geht um ein Bild meines Garagentors, das ich bekommen möchte, wenn es geöffnet und/oder geschlossen wurde.
Das Tor wird über eine HomeMatic gesteuert. Mir geht's wirklich nur darum, ein JPG zum Zeitpunkt des Schließens oder Öffnens zu erzeugen, um es mir per Pushover und/oder Telegram zuschicken zu lassen. Was meinst du denn mit Aktionsregeln?
Um mal kurz war zu den Snapshot zu sagen per Homematic.
Ich lege per Script ein Snapshot auf der RaspberryMatic ab. Das Bild wird dann per Pushover an mein Handy verschickt. Getriggert wird dies durch den verkabelten Klingeltster. Ganz einfach eigentlich und hat mit der SS im Prinzip nichts zu tun.
Genau da liegt ja das Problem. Mit einer Raspi-Cam, die einen MJPEG-Stream liefert, habe ich das auch so gelöst. Ein kleines Projekt von mir dazu habe ich hier mal beschrieben.
Aber ich muss nun einen Snapshot von einer Kamera erzeugen, die nur einen RTSP-Stream liefert und da komme ich mit der Lösung nicht weiter.
Der Trigger ist ein Programm auf einer HomeMatic-Zentrale (CCU3), mit dem ich mir dann per curl oder wget den Snapshot der RTSP-Kamera erzeuge und auf der CCU3 (ein Raspi 3B, auf dem aber ansonsten nichts weiter installiert werden kann, da die CCU3 ein geschlossenes System ist) speichere, um ihn dann von dort aus per Pushover zu verschicken.
Ich habe mir gestern auch mal das ffmpeg-Paket auf die DiskStation installiert. Evtl. komme ich damit weiter. Hatte nur noch keine Zeit.
Ich hatte ja gehofft, dass ich es mit diesem API-Befehl hinbekomme.
Die Frage ist aber, wie findet die Authentifizierung statt? Normal sollte diese zuerst aufgerufen werden. Danach wird ein Session cookie gespeichert, gefolgt von der eigentlichen Snapshot URL.
Danke. Das werde ich mal ausprobieren. Ggf. auch mit vorheriger Authentifizierung. Frage mich aber dann, warum man den RTSP-Stream direkt abrufen kann.
Was ist denn dein Problem und welche Neuigkeiten sollte es geben?
Die API ist klar definiert und wird wahrscheinlich erst mit neuen Releases geändert oder überarbeitet.
Dazu geht man zunächst in die Einstellungen für die RTSP-Kamera und stellt die Kamera kurzeitig auf "MJPEG" um. Der Stream wird dann in der Regel unterbrochen, aber das ist erst mal nicht weiter tragisch, da man am Ende wieder alles auf "H.264" zurückstellt.
Nun klickt man mit der rechten Maustaste auf die betreffende Kamera und dann auf "Stream-Pfad freigeben". Dann werden einem die Daten der Kamera, die man für die nachfolgenden Befehle benötigt, angezeigt. Neben der IP-Adresse der DiskStation (1) findet man hinter "cameraID=" die wesentlichen ID-Daten der Kamera (2).
Mit folgendem Shellskript (Achtung: es dürfen keine CR am Zeilenende enthalten sein) kann man sich dann einen Snapshot holen.
Code:
#!/bin/bash
# +++++ Pfad und Name eines zu speichernden Bildes +++++
pictPathCCU='/tmp/Bildname.jpg'
# +++++ Zugriffsdaten der Synology DiskStation +++++
ipDiskStation='xxx.xxx.xxx.xxx:5000' # IP:PORT der DiskStation
account='admin' # Admin-Name auf der DiskStation
password='xxxxxxxxxx' # Admin-Passwort
cameraId='xx&StmKey=xxxxxxxxxxxxxxxxxxxxxxxxx'
# +++++ Snaphshot holen +++++
wget -q --keep-session-cookies --save-cookies cookies.txt -O- "http://"$ipDiskStation"/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account="$account"&passwd="$password
wget -q --load-cookies cookies.txt -O $pictPathCCU "http://"$ipDiskStation"/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId="$cameraId
exit 0
Und hier noch ein entsprechendes Skript für die HomeMatic:
Code:
! +++++ Pfad und Name eines auf der CCU zu speichernden Bildes +++++
string pictPathCCU = "/tmp/Bildname.jpg";
! +++++ Zugriffsdaten Synology DiskStation +++++
string ipDiskStation = "xxx.xxx.xxx.xxx:5000"; ! IP:PORT der DiskStation
string account = "admin"; ! Admin-Name auf der DiskStation
string password = "xxxxxxxx"; ! Admin-Passwort
string cameraId = "xx&StmKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
! +++++ Namen der verwendeten Systemvariablen +++++
string svPushImage = "CCU SV Push Bild"; ! gem. zPNS-xx
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Deklaration weiterer Variablen +++++
string cookieUrl; string pictUrl;
! +++++ Snaphshot holen +++++
cookieUrl = "http://"#ipDiskStation#"/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account="#account#"&passwd="#password;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q --keep-session-cookies --save-cookies cookies.txt -O- '"#cookieUrl#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
pictUrl = "http://"#ipDiskStation#"/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId="#cameraId;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q --load-cookies cookies.txt -O '"#pictPathCCU#"' '"#pictUrl#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();