Kamera Konfiguration RTSP Stream als MJPEG in Netz streamen?

misux

Benutzer
Mitglied seit
29. Feb 2008
Beiträge
320
Punkte für Reaktionen
14
Punkte
18
HI!

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...

Würde mich über eine Antwort sehr freuen.

Vielen Dank!
 

tschortsch

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
1.645
Punkte für Reaktionen
34
Punkte
74
Kommt vieleicht auf deine DS an. Welches Model hast du?

Wenn es ein + Gerät ist kannst du da eventuell einen Docker-Container laufen lasse in dem du dann die die gleiche Software laufen kannst wie am RP.
 

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
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.
 

misux

Benutzer
Mitglied seit
29. Feb 2008
Beiträge
320
Punkte für Reaktionen
14
Punkte
18
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..
 

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
Warum denn unbedingt MJPEG? Nimm einfach h264 und stell die fps, Auflösung oder die Bitrate für den Stream um.
 

misux

Benutzer
Mitglied seit
29. Feb 2008
Beiträge
320
Punkte für Reaktionen
14
Punkte
18
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...
 

tschortsch

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
1.645
Punkte für Reaktionen
34
Punkte
74
Docker geht leider nicht auf deiner 215j. Nur auf den + Geräten mit intel CPU.
 

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
Ich mache das mit folgendem Link, um den Stream einer unserer HiKam S6-Kameras direkt im Browser ansehen zu können:

Code:
http://192.168.x.xx:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%22

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).

2020-12-02 08-15-05.png

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?

Gruß,

Thorsten
 
  • Like
Reaktionen: e91

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
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!
 

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
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.
 

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
Und das Tor ist über i/o angeschlossen? Dann geht das doch ganz easy über die Aktionsregeln.
 

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
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?
 

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
Was soll der Trigger sein für das Verschicken des Fotos? Eine Bewegungserkennung? Ein i/o Kontakt?
Hat dein Homematic virtuelle inputs oder Outputs?
 
Zuletzt bearbeitet:

special88

Benutzer
Mitglied seit
06. Jan 2019
Beiträge
33
Punkte für Reaktionen
2
Punkte
8
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.
 

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
Ich lege per Script ein Snapshot auf der RaspberryMatic ab.

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.

Was soll der Trigger sein für das Verschicken des Fotos? Eine Bewegungserkennung? Ein i/o Kontakt?
Hat dein Homematic virtuelle inputs oder Outputs?

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.

Code:
http://192.168.x.xx:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId=

Aber da bekomme ich mit der cameraID, die für den Stream einwandfrei funktioniert, dann leider nur eine code-105-Meldung angezeigt.
 
Zuletzt bearbeitet:

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
Laut API muss der Syntax so aussehen.
Wobei die ID angepasst werden muss und profile type ist 0=high, 1= balanced, 2= low

HTML:
http://192.168.1.1:5000/webapi/entry.cgi?version=9&id=2&api="SYNO.SurveillanceStation.Camera"&method="GetSnapshot"&profileType=1

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.

HTML:
http://192.168.1.1:5000/webapi/auth.cgi&api=SYNO.API.Auth&method=Login&version=1&account=USER&passwd=PASSWORT&session=Surveillancestation
 
  • Like
Reaktionen: Beelzebub

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
Danke. Das werde ich mal ausprobieren. Ggf. auch mit vorheriger Authentifizierung. Frage mich aber dann, warum man den RTSP-Stream direkt abrufen kann.
 

robby305

Benutzer
Mitglied seit
26. Dez 2020
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hi,

ich habe genau das gleiche Problem und wollte wissen ob es schon Neuigkeit in der Richtung gibt.

Gruß
Robert
 

c0smo

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.570
Punkte für Reaktionen
1.680
Punkte
274
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.
 

drtp

Benutzer
Mitglied seit
27. Jul 2011
Beiträge
177
Punkte für Reaktionen
2
Punkte
18
Ja, icih habe mittlerweile eine Lösung gefunden.

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.

2020-12-22 12-33-35.png

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).

2020-12-22 12-34-31.png

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();

Hoffe, es hilft.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat