Überwachungskamera (RTSP-Stream) in FTUI anzeigen

Begonnen von aloz77, 04 Februar 2016, 17:10:44

Vorheriges Thema - Nächstes Thema

tomster

Ach, und bevor ich es vergesse:

Über diesen Weg "umgeht" man auch das Problem mit den inzwischen auf allen Browserplattformen gesperrten http://user:password@server. Der Webserver von tinyCam wird wie eine Axis-Kamera angesprochen und erlaubt somit auch die Angabe der Login-Credentials über Parameter.  Vielleicht funktionieren dadurch auch "alte" Webcams, die zwar MJPEG ausgeben können, aber noch die basic authentication mittels URL encoding voraussetzen. Probieren lohnt sicher...

Ich hab die App inzwischen auf einem Nexus5 am laufen und auch von dort, geht bislang alles ohne Probleme. Mal schauen, ob der USB-Port an der Fritzbox ausreichend dimensioniert ist, um das Smartphone während des Betriebs zu laden. Dann läge das Handy zukünftig neben der Fritte und würde nicht mehr angelangt.

Und nur der Ordnung halber:
Ich bin mit tinyCam weder verwandt, noch verschwägert.

Florian_GT

Ich habe bei mir Zoneminder als zwischenstation laufen, und die Streams, wie auch immer diese von der Kamera denn kommen, was das Format angeht, werden umgewandelt in MJPEG, und diese habe ich dann in Zoneminder eingebunden...
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

patator

Hallo zusammen,

ich habe dank dieser Anleitung versucht auf die Passwort geschützten Wansview W2 Kameras zuzugreifen und das Passwort Popup zu umgehen, damit ich über Fully Browser meinen Stream abgreifen kann.
Leider bekomme ich dennoch ein Passwort Popup beim Zugriff. Gibt es hierzu noch ggf. Tips?

Hier mien Auszug:

<VirtualHost *:8888>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyRequests Off
#ProxyPreserveHost On
        <Proxy *>
              Order deny,allow
              Allow from all
        </Proxy>
        <Location /camera/>
        RequestHeader set Authorization "Basic Basic ZmhlbTpmaGVt"
        </Location>
        ProxyPass /camera/ http://192.168.2.26/mjpeg/stream.cgi?chn=1
        ProxyPassReverse /camera/ http://192.168.2.26/mjpeg/stream.cgi?chn=1

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet



Zitat von: Tweak am 14 Januar 2017, 10:54:06
Danke damit klappt es nun!

Hier ein kurzes Howto wie das mit dem mod_proxy läuft.

Vorraussetzung ist ein Rechner/Raspi etc. mit Apache.

mod_proxy installieren

apt-get install libapache2-mod-proxy-html

mod_proxy aktivieren & apache2 neustarten

a2enmod proxy
a2enmod proxy_html
a2enmod proxy_http


Damit die Passwort-Eingabe von Apache erledigt wird, müssen die Passwörter eurer Camera gehashed werden daher:

auf dem device eine Datei mit dem Namen pass.py erstellen und ausführbar machen


nano pass.py

code reinkopieren und benutzer und passwort durch eure daten ersetzen

import base64
hash = base64.b64encode(b'admin:12345')
print(hash)



chmod u+x



python pass.py


die Ausgabe ist nun der Hash, diesen kopieren.

Weiter in der apache Konfiguration.

die datei /etc/apache2/sites-enabled/000-default.conf öffnen und folgendes eintragen unter DocumentRoot


        ProxyRequests Off
        <Proxy *>
                Order deny,allow
              Allow from all
        </Proxy>
        ProxyPass /camera/ http://IP-Adresse-der-Kamera/Streaming/channels/1/  <----- Beispiel meiner Hikvision
        ProxyPassReverse /camera/ http://IP-Adresse-der-Kamera/Streaming/channels/1/ <----- Beispiel meiner Hikvision
        <Location /camera/>
        RequestHeader set Authorization "Basic <euer ermittelter Hash>" ohne <>
        </Location>


danach apache2 neuladen


service apache2 reload


Nun sollte das JPEG ohne Passwort wie folgt erreichbar sein:

http:///IP-Adresse-des-Gerätes-wo-Apache-läuft/camera/picture?snapShotImageType=JPEG

Einbinden ins FTUI wie zuvor erwähnt:

<li data-row="2" data-col="2" data-sizex="3" data-sizey="3">
        <header>Webcam 1</header>
   <div data-type="image" class="cell nocache" data-url="http:///IP-Adresse-des-Gerätes-wo-Apache-läuft/camera/picture?snapShotImageType=JPEG" data-size="150%" data-refresh="5" >  </div>
</li>



mfg

mrfloppy

Zitat von: Florian_GT am 14 August 2018, 19:47:43
Ich habe bei mir Zoneminder als zwischenstation laufen, und die Streams, wie auch immer diese von der Kamera denn kommen, was das Format angeht, werden umgewandelt in MJPEG, und diese habe ich dann in Zoneminder eingebunden...


Und wie schauts es da aus mit der Verzögerung?

LG
RaspiMatic, RFXtrx433 E USB, Div. Thermostate, CUL433, Fhemduino, Signalduino, Temp/luftfeuchesensoren,Fensterkontakte,Intertechno Schalter,....... HM-IP

Florian_GT

Zitat von: mrfloppy am 19 April 2019, 14:57:40

Und wie schauts es da aus mit der Verzögerung?

LG

Max. 1-2 Sekunden. Aber im moment ist es Echtzeit. Keine Verzögerung.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

misux

#50
Hallo!!!

Das mit Zoneminder klingt interesant! Leider bin ich ein noob und bräuchte Hilfe falls das jemand hier kann und Muße hat...

Ich habe auf meinem Raspi 3B Fhem laufen. Kann man da Zoneminder installieren? Oder ist das zu Leistungshungrig?

Wie funktioniert das genau?

Wie kann ich damit meine RTSP Streams in FTUI einbinden?

Vielen Dank!

misux

Hi!

Ich habe es inzwischen geschafft zomeninder zum laufen zu bringen und meine Cams dort einzubinden...

Aber ich bekomme es ums verrecken nicht hin diese Streams in meinem FTUI einzubinden...

Mein Code sieht so aus:

<div class="vbox">
<div data-type="image"
     data-url="http://192.168.1.77/zm/cgi-bin/nph-zms?scale=50&width=640px&height=480px&mode=jpeg&maxfps=30&monitor=1&connkey=759202&rand=1572204260"
     data-size="100%"
     data-refresh="7"></div>
</div>


Aber bekomme kein Video angezeigt...

Muss ich im Zoneminder irgendwas aktivieren oder einstellen? Habe in der WIKI nichts gefunden..

Kann mir bitte jemand einen Tipp geben?

Vielen Dank!

AlpenFlizzer

Hallo zusammen!

Zur Info an Interessierte, ich habe im Fully Kiosk Browser FTUI am laufen und habe dort die RTSP Streams meiner IPcams in FullHD und Echtzeit zB in einem Popup Widget. (Wenn jemand klingelt, wird das Cam Bild maximiert...)

Dazu benutze ich das sogenannte Janus Gateway von Meetecho https://github.com/meetecho/janus-gateway, welches die RTSP Streams via WebRTC an einen html Videotag in der FTUI leitet.

Ich habe schonmal darüber geschrieben https://forum.fhem.de/index.php/topic,98012.0.html aber damals war das wegen fehlender Codecs in der Chrome Webview nicht möglich. In der aktuellen Chrome 79.0.3945.93 funtioniert das endlich.

Es ist also nicht unmöglich, aber man muss eben Janus dafür aufsetzen zB wie ich, in einem Docker Container https://github.com/AlpenFlizzer/janus-gateway-docker. Dann noch mithilfe von zwei .js Dateien das ganze in die FTUI einbetten und läuft.

Grüsse, Sascha

misux

HI!

Das klingt sehr interessant!

Hast du vielleicht die Muße das etwas zu erläutern?

Wo ist das Gateway installiert?  Läuft es vielleicht sogar auf dem gleichen System wie Fhem?

Ich würde nämlich gerne 8 Cams auf dem Tablet laufen lassen, es muss nicht in FullHD sein aber sie sollten alle 8 gleichzeitig auf einer Page sichtbar sein und so verzögerungsfrei wie möglich.

Finde das Thema sehr interessant bin aber leider nicht so bewandert in Linux und vor allem wie man das installiert und die Cams einbindet...

Im Moment nutze ich auf einem Android Mediaplayer TinyCam Pro, dieser stellt mir als MJPEGStream die Cams ins Netzwerk, und ich greife diese Streams im FTUI ab. Das funktioniert auch soweit ganz gut, es stört mich aber das man auf einen zusätzlichen Player nicht verzichten kann und die Qualität ist auch nicht die Beste...

blasterx

Das würde mich auch näher interessieren.

Gruß BlasterX
Gruß-BlasterX

Mumpitz


Florian_GT

Da ist jetzt auch mein Interesse geweckt. Aktuell gibt es für das DoorPI ja nur eine Möglichkeit per Fritzbox über SIP zu kommunizieren. Eine zwei Wege Kommunikation wäre cool. Bild und Video ;)
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

Florian_GT

Und langfristig wollte ich ohnehin weg von Zoneminder, weil doch recht Ressourcenhungrig, hin zu den Clients die selber die Bilder bei Bewegung verschicken und oder die Aufzeichnungen irgendwo ablegen.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

AlpenFlizzer

#58
Hallo!

Mit so einem Interesse habe ich gar nicht gerechnet...  :D

In meinem original Post habe ich schon einige Links dabei. Ich habe (wie auch viele andere) meine Fhem Umgebung in Docker laufen, und dafür habe ich auf GitHub auch eine Demo veröffentlicht, die verwendet werden kann, um den "Janus-Server" zu betreiben. Grundsätzlich kann Janus aber auch direkt auf einen Rechner installiert werden, dabei müsste man im Prinzip einfach alle Schritte aus dem Dockerfile zu Fuß zB am Raspi oder NUC machen.

Bezogen auf die Einrichtung mittels meinem Docker Container:

In groben Zügen muss man folgende Schritte machen
  1. Den Janus Container starten. (Nun kann man mittels IP-Adresse des Hosts, auf dem Janus läuft bereits auf Port 10080 einen Demo-Stream anschauen - http://<host-ip>:10080/streamingtest.html)
  2. Die Janus Streaming-Config anpassen, also für jeden Stream die Einstellungen tätigen. (Stream ID vergeben, Stream benennen, die RTSP URL eingeben, RTSP username, RTSP passwort, etc.)
      Nach jeder Änderung muss Janus neu gestartet werden, damit die Änderungen übernommen werden.
  3. Es gibt zwei JavaScript Dateien die man in den FTUI Ordner "js" ablegen muss. janus.js und janusStreamer.js
  4. In der Datei janusStreamer.js muss jetzt noch die korrekte IP des Janus Server eingestellt werden.
  5. In der FTUI index.html noch die nötigen Abhängigkeiten inkludieren: zB

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/webrtc-adapter/6.4.0/adapter.min.js"></script>
<script type="text/javascript" src="janus.js"></script>
<script type="text/javascript" src="janusStreamer.js">//Edit Janus Gateway Server IP in this file at first!</script>

  6. Irgendwo in der FTUI (zB in einem Popup Widget hab ich es) den Stream einbinden: zB

        <script>
openStream("99", "rtspdemo");//zB 99 ist die ID des Streams, welche in der Streaming Config am Janus Server vergeben wurde. "rtspdemo" ist die ID des video-Tags, wo das Video spielen soll.
</script>

<video id="rtspdemo" width="400" height="auto" autoplay muted>
<!--Works in Chrome and Firefox for Windows and in Chrome for Android-->
</video>


Klingt nach viel, ist es aber nicht unbedingt.  ;D

In meinem GitHub repo https://github.com/AlpenFlizzer/janus-gateway-docker findet man alle Dateien die benötigt werden. Nutzt man Docker, so ist das ganze zur Hälfte schon Plug'n'Play.

Zitat von: Florian_GT am 25 Januar 2020, 19:03:32
Da ist jetzt auch mein Interesse geweckt. Aktuell gibt es für das DoorPI ja nur eine Möglichkeit per Fritzbox über SIP zu kommunizieren. Eine zwei Wege Kommunikation wäre cool. Bild und Video ;)
Das Janus Gateway ist eigentlich auch primär als (Video)Konferezn-Call System mittels WebRTC gedacht. Das RTSP Streaming ist nur ein "Abfallprodukt" der Entwickler. Eine Video-Gegensprechanlage innerhalb der FTUI könnte man damit also wahrscheinlich realisieren - da bin ich aber dann raus. :D

Grüße, Sascha

Stonemuc

Nachdem ich mein FTUI jetzt fertig habe, werde ich das auch mal in Angriff nehemen. Meine aktuelle Iframe Lösung mit Zoneminder ist auch jicht das Gelbe vom Ei, da ja immer die komplette Page abgebildet wird und nicht nur das Bild.
Dabei kann ich FHEM direkt auch mal in einen Docker Container auf meinem OMV Server ziehen....dann spare ich mir den Raspi bzw. kann ihn anderweitig verwenden.
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe