Ich habe einige (übrigens sehr gute!) Überwachungskameras Hikvision DS-2CD2032-I im Einsatz. Jetzt habe ich mir die Aufgabe gestellt, die Videos in FTUI auf einem Android-Gerät einzubinden. Ich bin ziemlich weit gekommen, die letzten Schwierigkeiten sind offensichtlich lösbar.
Die Kameras können als Substream wahlweise RTSP/H.264 oder MJPEG ausgeben, was beides in einem Android-Browser nicht unproblematisch ist. Vorweg: MJPEG ist auf Desktop easy als <img> einzubinden. Ich habe es jedoch auf Android (egal ob in Webview oder Chrome) auch mit Hilfe von diversen JS-Lösungen nicht zum Laufen gebracht.
Mein erster und komplizierterer Ansatz war RTSP in HLS umzukodieren, um dann in einem HTML5-Video-Tag abspielen zu können. Nach viel Rumprobieren kann ich sagen, das Umkodieren geht einfacher als gedacht. Das erledigt auf Raspi ein einziger FFMPEG-Prozess mit minimaler CPU Auslastung, da das Video schon glücklicherweise H.264 kodiert ist und nur remuxt und in HLS-Scheiben geschnitten werden muss.
mkdir /var/hls
ffmpeg -d -y -i rtsp://[user]:[pass]@[ipcam]:554/Streaming/Channels/2 -c copy -f hls -hls_time 3 -hls_list_size 3 -hls_wrap 10 /var/hls/mystream.m3u8 &
Man braucht jetzt noch einen Web-Server, mit dem man auf die Dateien im Verzeichnis /var/hls zugreifen kann. Ich habe nginx konfiguriert, es geht so ähnlich wahrscheinlich auch mit jedem anderen.
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /var;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
Jetzt kann man das Video einfach mit dem video-Tag einbinden:
<video src="http://[webserver]/hls/mystream.m3u8" type="application/x-mpegurl" controls autoplay width="640" height="480"></video>
Folgenden Stand habe ich nun auf Android (Nexus 7, CM12.1):
1. Das Video wird abgespielt mit ein paar Sekunden Verzögerung, was bei HLS normal scheint. Das finde ich auch nicht schlimm.
2. In Crome auf Android spielt das Video, wo es soll. Autoplay geht jedoch nicht.
3. In Fully Kiosk Browser auf Android (http://www.fully-kiosk.com) spielt das Video sowohl embedded als auch fullscreen. Auch Autoplay geht.
4. Das Seiteverhältnis im Video stimmt nicht. Es wird 16:9 aufgenommen, aber 4:3 gestreamt. Mit ffmpeg -aspect 16:9 geht das leider nicht zu korrigieren. Auch mit bekannten HTML-Mitteln ließ sich das Aspect Ratio auf Android nicht ändern. Das ist aber ein (spezifisches?) Problem der Hikvision-Kamera.
5. Es geht theoretisch auch mit dem Full-HD-Stream, nur da kommt bei mir ffmpeg (oder das Netzwerk?) an die Grenzen.
DAS muss ich unbedingt in den nächsten Tagen ausprobieren. Danke schon Mal im Voraus!
Ich hab mir eine PTZ-Überwachungskamera vom Chinesen geholt, die nur RTSP/H.264 rauslässt. Da dafür ja keine native Browserunterstützung existiert, war's bislang Essig mit der Anbindung an's FTUI. Dass eine Traskodierung soo wenig CPU-Last verursacht hätte ich aber nie gedacht und deshalb schon von vorneherein die Finger davon gelassen.
Hallo
Ich habe das bisher per vlc eingebunden Xiomi Ants Cam
was nur per firefox geht.
<div class="top-space">
<embed type='application/x-vlc-plugin' pluginspage='http://www.videolan.org' version='VideoLAN.VLCPlugin.2'width='360' height='320' id='vlc' loop='yes' autoplay='yes' img src="rtsp://192.168.2.100:554/ch0.h264" height="130%" wight="100%" border="1">
</img src>
</div>
Was icht sehr performet ist.
Als Webserver nutze ich lighthttp
Weiss jemand wie man es dort per HLS einbindet ?
alias.url += (
"/xiomi" => "/home/xiomi/mystream.m3u8
So funktioniert es nicht :-[
Hatte es schon mal mit Zoneminder versucht aber dort wird
für h.264 Version 1.28 benötigt aber nur 1.26 bereitgestellt
beim Raspberry2.
Eine Möglichkeit Version 1.28 zu installieren habe ich bisher
nicht gefunden.Vielleicht weiß da jemand mehr hier.
Zitatfür h.264 Version 1.28 benötigt aber nur 1.26 bereitgestellt
beim Raspberry2.
Eine Möglichkeit Version 1.28 zu installieren habe ich bisher
nicht gefunden.Vielleicht weiß da jemand mehr hier
Hast du noch wheezy auf deinem PI2 ?
Kurze suche meinerseits ergab bei Jessie für zoneminder 1.28
Hallo
Nein bei mir wird nur Version 1.26 bereitgestellt un die kann mit h264 nicht umgehen aber vieleicht
sind auch meine Paketquellen nicht aktuell..
Eine installation aus den Sourcen ist wohl nicht möglich?
Hallo,
bei mir kommt leider schon beim Anlegen des Kodierungsprozesses ein Fehler:
root@raspberrypi:/var/hls# ffmpeg version 0.8.17-6:0.8.17-1+rpi1, Copyright (c) 2000-2014 the Libav developers
built on Mar 25 2015 00:39:58 with gcc 4.6.3
The ffmpeg program is only provided for script compatibility and will be removed
in a future release. It has been deprecated in the Libav project to allow for
incompatible command line syntax improvements in its replacement called avconv
(see Changelog for details). Please use avconv instead.
Unrecognized option 'd'
Failed to set value '-y' for option 'd'
Unrecognized option 'd'
Failed to set value '-y' for option 'd'
Lass -d einfach weg. Das sagt dem ffmpeg bei mir lediglich, dass er nicht so viel quatscht.
-d scheint eine nicht dokumentierte Option zu sein. Keine Ahnung, warum dein Build sie nicht kennt.
https://trac.ffmpeg.org/ticket/1698
Um das HTML5-Video-Abspielproblem in Android zuverlässig zu lösen, habe ich eine einfache neue Webview-basierte App geschrieben (Fully Fullscreen Browser (http://forum.fhem.de/index.php/topic,48862.0.html)), die alles macht, was ich will. Sie soll auf Android ab 4.4 laufen. Auch Autoplay bei Videos klappt jetzt dank einem kleinen Trick.
ich lese hier mal mit , auch ne offene Baustelle bei mir !
Zitat von: aloz77 am 06 Februar 2016, 20:34:17
Unrecognized option 'd'
Failed to set value '-y' for option 'd'
Lass -d einfach weg. Das sagt dem ffmpeg bei mir lediglich, dass er nicht so viel quatscht.
-d scheint eine nicht dokumentierte Option zu sein. Keine Ahnung, warum dein Build sie nicht kennt.
https://trac.ffmpeg.org/ticket/1698
Anscheinend liegt es das ich per Paketverwaltung installiert habe mit apt-get install ffmpeg.
Nun hab ich es von der ffmpeg.com seite Installiert und bin ein schritt weiter.
Zitat von: aloz77 am 04 Februar 2016, 17:10:44
Vorweg: MJPEG ist auf Desktop easy als <img> einzubinden. Ich habe es jedoch auf Android (egal ob in Webview oder Chrome) auch mit Hilfe von diversen JS-Lösungen nicht zum Laufen gebracht.
Also das lief und läuft bei mir Out-of-the Box auf 2 verschiedenen Tablets mit Chrome (Samsung Galaxy S 8.4 mit Android 5.0 und einem Acer Iconia Tab mit Android 4.x (grad nicht griffbereit) absolut problemlos und stabil ohne Aufhänger etc. Und zwar mit allen 4 Kameras, die ich in einem "Alarm-"-Pagetab auch alle gleichzeitig anzeige ...
<div data-type="image"
data-url="http://192.168.x.x/videostream.cgi?loginuse=admin&loginpas=xxxxx"
data-size="100%"
data-refresh="7">
</div>
Nur die Refresh-Rate hab ich n bissel gedämpft (s.o.), aber das langt mir hin. Keine Abbrüche, nix .. also vielleicht notfalls mal mit gedrosselter Framerate probieren? Die Kameras sind 2xPanasonic WV Sc385 (teuer), 1xInstar IN-3010 (billig) 1xWansview NCL616W (billigstens).
Zitat von: peterk_de am 08 Februar 2016, 22:55:19
Also das lief und läuft bei mir Out-of-the Box auf 2 verschiedenen Tablets mit Chrome...
Das ist ein sehr interessanter Punkt. Ich habe hier mal tiefer reingeschaut. Es scheint, dass Android Chrome nicht das Problem mit MJPEG hat, sondern mit der Authentifizierung (basic auth), die in der URL mithängt. Bei meinen Cams geht der MJPEG-Stream AFAIK nur unter dieser URL:
http://
[user]:[pass]@[ipcam]/Streaming/Channels/2/preview
Und genau das funktioniert im Chromium nicht. Es wurde anscheinend schon in 2011 aus Sicherheitsgründen abgeschaltet, dass eingebettete Inhalte eine eigene Authentifizierung durchführen können. Erstaunlicherweise funktioniert es im Chrome auf Windows noch. Also MJPEG ist bei diesen Cams nicht wirklich eine Option. (Beim RTSP-Stream lässt sich die Authentifizierung bei der Cam sogar abschalten, beim MJPEG nicht.)
Eine Diskussion zu diesem Thema gibt hier: https://code.google.com/p/chromium/issues/detail?id=308999
Edit: Das einbetten eines MJPEG-Video mit Auth im Chromium geht nicht, aber im eigenen Fenster aufrufen geht sogar gut. Also das ist nicht schick, aber es funktioniert:
<div data-type="pagebutton" data-url="http://user:pass@server/Streaming/channels/2/preview" data-icon="fa-video-camera" class="cell"></div>
Na das könnte man doch dann aber vielleicht lösen ... probier mal, ob du bei dem Webinterface wenn du dich per HTTP-Auth einloggst nen Cookie mit ner Session-ID verpasst bekommst. Falls ja, könnte danach (im gleichen Browser für eine Weile) der MJPEG-Stream ohne basic auth abrufbar sein... notfalls könnte man auch nen nginx Proxy dazwischenhängen, der das Basicauth anhängt. Spart ggü remuxen sicher nochmal CPU-Load.
Der Cookie-Trick funktioniert übrigens nicht auf der Cam. Sie fordert auf /Streaming/... immer per 401 die Authentifizierung an.
Die CPU-Last des ffmpeg ist echt minimal (<5%). Ich bin zur Zeit voll von H.264 und HTML5-Video überzeugt und werde daher bei MJPEG nicht tiefer explorieren.
Habe auch eine Hikvision IPcam.
Ich habe sie bei mir so eingebunden und funktioniert aber am PC nur in Chrome.
Am Tablet mit dem Fully Browser geht es auch in fast Echtzeit.
<li data-row="2" data-col="2" data-sizex="3" data-sizey="3">
<header>Webcam 1</header>
<div data-type="image" class="cell" data-url="http://10.0.0.87/Streaming/channels/1/httpPreview?snapShotImageType=JPEG&auth=XXXXXX" data-size="150%" data-refresh="5" > </div>
</li>
Grüße
Hallo
Habe das hier mit hls auch mal Versucht.
Nur zeigt er mir leider in Chrome nichts an.
Wenn ich den Stream mit VLC öffne geht es.
Benutze als Webserver lighttpd dort habe
ich ein public Verzeichnis erstellt wo der
lighttpd drauf zugreifen kann Zugriff funktioniert
<li data-row="3" data-col="4" data-sizex="4" data-sizey="3">
<header class="headerTransparent">Keller</header>
<div class="top-space">
<video src="http://192.168.2.108/~andre/mystream.m3u8" type="application/x-mpegurl" controls autoplay width="360" height="320"></video>
</div>
</li>
Habe ich irgendwas übersehen liegt es vielleicht an lighttpd das er mir nichts anzeigt.
Mit meiner Camera Xiomi Ants besteht nur Möglichkeit rtsp zu nutzen. Ein einbinden des
VLC plugin geht leider nur mit Firefox :(
Andre
In Chrome auf Windows geht HLS nativ auch nicht, nur mit einigen JS libs klappts. Chrome auf Android kann HLS dagegen.
Hallo,
genau das kann ich auch bestätigen, das es am Windows Browser liegt. Auf meinem Handy und VLC klappt alles wunderbar.
edit:
Hab das ganze noch von außerhalb meines Netzwerk versucht. Leider klappt das gar nicht.
Gruss
Daniel
Hallo
irgendwie komme ich mit dem ffmpeg nicht weiter.
ffmpeg ist installiert und scheint auch zu laufen.
nginx ist auch installiert und konfiguriert so wie im 1 Post.
Wenn ich den befehl in die Konsole eingebe natürlich mit meiner IP und Login daten: ffmpeg -y -i rtsp://[user]:[pass]@[ipcam]:554/Streaming/Channels/2 -c copy -f hls -hls_time 3 -hls_list_size 3 -hls_wrap 10 /var/hls/mystream.m3u8 in die Konsole eingebe macht er auch was und Dateien werden im ordner HLS auch angelegt.
Aber wenn ich den link http://[webserver]/hls/mystream.m3u8
zum beispiel im VLC Player oder im Firefox öffne, kann der link nicht geöffnet werden.
Mache ich was falsch oder wie bekomme ich das Video mit der M3U8 datei angezeigt bzw. gestreamt?
Du kannst testweise versuchen die Dateien im hls-Ordner runtrzuladen und in VLC abzuspielen. Wenn das auch geht, würde ich die Webserver-Konfiguration doppelchecken.
Geht mit VLC die andere remote m3u8 zu spielen? Ich habpe bei mir auch lange gesucht, bis ich feststellte, dass die Desktop-Firewall da was blockt bei VLC.
Die *.ts dateien haben alle so um die 3MB und es sind 9 Stück aber ich kann die mit VLC nicht abspielen.
Die m3u8 datei kann ich auch nicht abspielen.
Das Spuckt mir der Terminal aus. Siehe foto.
Noch jemand ne idee was falsch läuft?
Mich irritiert, dass deine Cam anscheinend einen mjpeg-Stream über RTSP liefert. Damit wird AFAIK kein HTML5-Video funktionieren. Es soll h.264 sein. Deswegen verschluckt sich FFMPEG vermutlich auch, da der Datenumfang bei der mjpeg-Kodierung einfach zu groß ist.
Servus aloz77,
ich habe nach deiner Anleitung den rtsp-Stream meiner Hikvision zu laufen gebracht und kann ihn in FTUI anzeigen lassen.
Als Browser auf meinem Tablet benutze ich den Fully-Browser!
Jetzt hab ich aber noch die Frage, ob das ständige Streamcodieren nicht die Lebensdauer meiner SD-Karte stark verkürzt?
Gruß
Roland
Zitat von: haempy am 11 Juni 2016, 19:55:29
... die Frage, ob das ständige Streamcodieren nicht die Lebensdauer meiner SD-Karte stark verkürzt?
Das kann dir logischerweise nur irgendwann deine SD-Karte sagen :P Aber eine interessante Frage. Ich habe grade meine HLS-Dateien auf Ramdrive
/var/tmp/hls ausgelagert. Funktioniert auch.
mkdir /var/tmp
nano /etc/fstab
# add this line: tmpfs /var/tmp tmpfs nodev,nosuid,size=1M 0 0
mount -a
df
Danke für den Tipp! Allerdings war die Zeitverzögerung doch sehr heftig für eine Haustürcam... Hab jetzt die Lösung via Amad gemacht. Dieses startet mir für 60s eine App auf dem Tablet, welche mir den rtsp stream direkt anzeigen kann. Verzögerung dort sehr gering in Gegensatz zu hls...
Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk
Hallo,
bezüglich #11 :
Bei mir (auf Raspi mit 7" Display) funktioniert es mit Chromium wenn man Chromium mit dem Parameter
--allow-cross-origin-auth-prompt
startet. Dann funktioniert die Kamera URL mit Username und Passwort.
Viele Grüße
Uwe
Hallo,
ich bastel auch gerade an der einbindung eines rtsp-Stream in FTUI.
Wo muss denn der Code eingefügt werden:
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /var;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
Gruß
@roadghost
das ist der Code den du für deinen Webserver benötigst um auf die "Datei *.m3u8 zugreifen zu können.
Bei Apache sollte das etwas anders aussehe und im Verzeichnis /etc/apache2/sites-enabled liegen.
PS: gibt es eventuell schön eine Lösung für dein Zeitversatz? Bei mir klappt der Stream sehr gut jedoch ist der Zeitversatz ziemlich störend.
Mfg
Keiner eine Idee oder ist das bereits gelöst??
Was den Zeitversatz angeht, kannst du versuchen, die ffmpeg-Einstellungen etwas zu tweaken. Vermutlich ist da aber nicht viel zu holen, da auch der Browser den HLS-Sream etwas cachen muss, was zusätzlich ein paar Sekunden verbraucht.
Zitat von: mrfloppy am 17 Februar 2016, 12:19:40
Habe auch eine Hikvision IPcam.
Ich habe sie bei mir so eingebunden und funktioniert aber am PC nur in Chrome.
Am Tablet mit dem Fully Browser geht es auch in fast Echtzeit.
<li data-row="2" data-col="2" data-sizex="3" data-sizey="3">
<header>Webcam 1</header>
<div data-type="image" class="cell" data-url="http://10.0.0.87/Streaming/channels/1/httpPreview?snapShotImageType=JPEG&auth=XXXXXX" data-size="150%" data-refresh="5" > </div>
</li>
Grüße
Ich wäre ja auch mit dieser Variante glücklich, jedoch wird bei mir im Fully einfach kein Bild angezeigt? Es erscheint nur das kleine img-logo.
Im Firefox funktioniert es.
Woran könnte das liegen?
mfg
Wie sieht die URL der Cam aus? Funktioniert's mit Chrome auf Android?
Bin jetzt leider nicht vor Ort aber der String ist dem ziemlich ähnlich,
einzigige Unterschied ist, dass mein string so beginnt: http://user:pass@xxx.xxx.xxx.xxx//Streaming/channels/1/snapShotImageType=JPEG
mfg
Das mit user:pass habe ich vermutet. Hier ist eine Erklärung, warum das Video in Fully und Chrome nicht geht:
https://forum.fhem.de/index.php/topic,48735.msg407139.html#msg407139
Es gibt AFAIK keinen Workaround.
Ok,
ginge eventuell eine andere Variante der Passwortübermittlung? Muss mal nachsehen ob meine Hikvision das anders auch kann.
Nutze zwar kein FTUI, aber habe das einbinden des Streams der Hikvision in SV versucht und aufgegeben.
Durch die Änderung in Android bekomme ich es einfach nicht zum laufen und bin somit auf MJPEG umgestiegen.
Es gibt einen Ansatz des VLC Players in HTML5, aber da fehlt mir die Zeit und das Know-How um das umzusetzen :(
Nebenbei: Leider nutzt Hikvision nicht den RTSP Standard, was das ganze zusätzlich erschwert...
Naja ich könnte bei meiner Hikvision den Substream auf MPEG umstellen. Würde das irgendetwas bringen?
Mir ist gerade eine Idee gekommen, die eventuell sogar funktionieren könnte!
Einzige Vorrausetzung sollte sein, Apache mit ModProxy.
Dadurch erledigt man das Problem mit der Passworteingabe und könnte den Stream oder das Jpeg ohne Passwort zur Verfügung stellen!
mal eben testen...
mfg
Die Lösung mit mod_proxy funktioniert tatsächlich!
Wer hätte das gedacht, mein einziges Problem was ich noch habe ist, dass sich das Bild nicht aktualisiert trotz
data-refresh="5"
Gibt es einen anderen Code welcher eine Aktualisierung des Bildes anstößt?
Mfg
class="nocache" (ich muss das unbedingt zum Default machen ...)
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
Hallo,
ich habe versucht den mod_proxy einzurichten und scheitere gerade mit folgender Fehlermeldung:
AH00526: Syntax error on line 22 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'RequestHeader', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
Hat jemand einen Tipp für mich, was ich tun muss um die Probleme mit dem unbekannten Kommando 'RequestHeader' zu beheben?
Update: Ich konnte die Fehler inzwischen selbst lösen. Zur Info für alle anderen mit ähnlichen Problemen, ich musste noch folgendes machen um alle Fehlermeldungen aufzulösen:
sudo apt-get install libxml2-dev
sudo a2enmod xml2enc
sudo a2enmod headers
@ Tweak
du kannst zu deiner Anleitung noch folgendes hinzufügen.
Zitatsudo a2enmod headers
Bei mir kannte Apache2 die Anweisung "Request Headers" in der 000-default.conf nicht.
Danach hat es dann geklappt.
Danke für den Workaround
Hallo Zusammen,
ich wollte auch mal meine noch nicht perfekte Lösung hierzu beitragen.
Ich habe nach einer gefühlten Ewigkeit es geschafft mir den Kamerastream meiner Hootoo's HT-IP211HDP nativ im Browser anzeigen zu lassen. Der Stream ist zwar ca 30 sek verzögert und läuft an sich minimal langsamer aber für mal kurz von Unterwegs nachzusehen reicht es vollkommen aus.
Zoneminder hatte bei meinem Raspi 2 eine CPU Auslastung von >70% bei gerade mal ~6 FPS. Jetzt sind es 20FPS und ~4% CPU Last mit ffmpeg.
Mein Lösungsansatz:
- Apache 2.4 mit ReverseProxy (SSL)
- nginx mit "nginx-ts-module"
- ffmpeg
- videojs (web video player)
Apache 2.4 mit ReverseProxy (SSL)
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
# SSLProxyCheckPeerExpire off
ProxyRequests Off
# ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
ProxyPass /fhem https://localhost:8083/fhem
ProxyPassReverse /fhem https://localhost:8083/fhem
nginx mit "nginx-ts-module"
https://github.com/arut/nginx-ts-module (https://github.com/arut/nginx-ts-module)
Achtung gefährliches Halbwissen ;D
Das Modul habe ich so konfiguriert, dass die HLS Dateien in /opt/fhem/www abgelegt werden. Ich weiß das ist nicht gut für die SD-Karte aber weiß keine alternative, da die m3u8 Datei vom Server aus erreichbar sein muss.
Auszug /usr/local/nginx/conf/nginx.conf
http {
server {
listen 8000;
location /publish/ {
# This directive sets unlimited request body size
client_max_body_size 0;
ts;
ts_hls path=/opt/fhem/www/media/hls segment=20s;
ts_dash path=/opt/fhem/www/media/dash segment=20s;
}
location /play/ {
types {
application/x-mpegURL m3u8;
application/dash+xml mpd;
video/MP2T ts;
video/mp4 mp4;
}
alias /opt/fhem/www/media/;
}
}
}
ffmpeg
Mittels ffmpeg habe ich nun den RTSP Stream in MPEGTS umgewandelt und zum ngninx-ts-modul geschickt.
ffmpeg -i rtsp://XXX.XXX.XXX.XX:554/11 -bsf:v h264_mp4toannexb -c copy -f mpegts http://localhost:8000/publish/ipcam1
videojs
Zum Wiedergeben des HLS Streams habe ich mich für videojs mit videojs-contrib-hls entschieden. Hierzu habe ich folgende html erstellt.
<!doctype html>
<html>
<head>
<link href="https://vjs.zencdn.net/6.2.7/video-js.css" rel="stylesheet">
<!-- If you'd like to support IE8 -->
<script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
</head>
<video id=example-video width=960 height=540 class="video-js vjs-default-skin" controls>
<source
src="/fhem/www/media/hls/ipcam1/index.m3u8"
type="application/x-mpegURL">
</video>
<script src="https://vjs.zencdn.net/6.2.7/video.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.10.1/videojs-contrib-hls.min.js"></script>
<script>
var player = videojs('example-video');
player.play();
</script>
</html>
Sonstige Einstellungen
Was ich derzeit händisch mache und noch nicht im Skript eingefügt habe ist die Änderung der Ordnerrechte.
Von dem Modul werden die Ordner automatisch als "(0700) rwx------" angelegt. Diese müssen auf "(0755) rwxr-xr-x" abgeändert werden, da sonst videojs die Datei nicht findet.
Alternative
Vorher hatte ich dies mit dem nginx-rtmp-modul gearbeitet.
Nachteil hier:
- Port 1935 muss offen sein, wenn man von außen zugreifen will
- Wiedergabe im Browser nur mit jwplayer (geht nicht vom Android aus)
Vorteil
- war nur 3-4 sekunden verzögert
Vielleicht konnte ich ja dem ein oder anderen helfen :-)
Grüße Wiesel
Zitat von: aloz77 am 04 Februar 2016, 17:10:44
Jetzt kann man das Video einfach mit dem video-Tag einbinden:
<video src="http://[webserver]/hls/mystream.m3u8" type="application/x-mpegurl" controls autoplay width="640" height="480"></video>
.
.
.
3. In Fully Kiosk Browser auf Android (http://www.fully-kiosk.com) spielt das Video sowohl embedded als auch fullscreen. Auch Autoplay geht.
Im Prinzip funktioniert meine Konfig. Aber wie bekomme ich das Video in FTUI denn in eine so schöne Kachel reingepflanzt :-) ?? Mein Video überlagert meine FTUI in Fully total. Anscheinend kenne ich mich mit der Widget Konfiguration in FTUI noch nicht so aus. Zumindest ist mir ein Video Widget noch nicht untergekommen. Oder habe ich einen grundsätzlichen Denkfehler?!?
Auch auf die Gefahr hin, dass es niemand liest, weil der Thread schon seit Monaten nicht mehr "beschrieben" wird:
Mir ist eine vermeintliche Transcodierungsmöglichkeit unter die Augen gekommen, die vielleicht eine Alternative zu den bisher genannten Varianten sein kann. Also zumindest wenn jemand noch ein unbenutztes Android-Handy rumliegen hat. Mit der App "tinyCam Pro" kann man angeblich den RTSP-Stream einer Kamera über den in der App eingebauten Webserver nach MJPEG transcodieren:
https://support.actiontiles.com/communities/12/topics/3441-tinycam-pro-android-app-web-server-stream-rtsp-and-wyze-cam-to-actiontiles
Wie performant das geht, konnte ich noch nicht ausprobieren, weil ich erstmal meine RTSP-Kamera und mein altes Smartphone wieder rauskramen (=suchen) und anschließen muss.
Vielleicht hat aber jemand anderes die "Zutaten" schon griffbereiter rumliegen... Wahrscheinlich ginge es (Performance & tatsächliche Funktion vorausgesetzt) auch auf dem Tablet, welches FTUI anzeigt...
--edit--
Ich hab's natürlich nicht ausgehalten und mir die App Mal schnell auf meinem Handy (recht aktuelles Nokia 8) installiert. Eine testweise Einbindung einer Überwachungskamera bei uns im Büro hat einwandfrei funktioniert. Das Bild wird wunderbar als MJPEG im Browser angezeigt. Leider kann ich noch keine genauen Angaben zur Performance machen.
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.
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...
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
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
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.
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!
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!
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
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...
Das würde mich auch näher interessieren.
Gruß BlasterX
Wäre auch sehr interessiert!
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 ;)
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.
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
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.
Moin,
nachdem meine uralte China-Foscam gestorben war, bei der man noch direkt den MJPEG-Stream abgreifen konnte, musste etwas neues her. Die neue, billige Ezviz-Cam liefert nur rtsp. Lösung für mich war dann die Installation von motioneye https://github.com/ccrisan/motioneye/wiki (https://github.com/ccrisan/motioneye/wiki) auf meinem NUC, auf dem auch FHEM läuft. Funktioniert wunderbar und den umgewandelten Stream konnte ich dann wieder in FTUI/FULLY auf dem Tablet einbinden. Das ganze gibt es auch als komplettes Image (motioneyeos) für den Raspberry.
Gruß Gerrit
Gesendet von meinem ONEPLUS A6013 mit Tapatalk
Zitat von: SB am 28 Januar 2020, 10:35:01
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.
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
Hallo Sascha,
ich habe es probiert meine beiden Cams mit deinen Janus Docker zum laufen zu bekommen, leider ohne Erfolg.
Hast du evtl. den ein oder anderen Tipp fü mich.
Der Docker läuft soweit die streamtest seite kann ich aufrufen. Dort sehe ich auch meine angelegten rtsp-Streams.
Wenn ich nun einen davon Starte passiert leider nichts.
Hier mal die Stream Config
rtsp-CamHaustuer: {
type = "rtsp"
id = 90
description = "CamHaustuer"
audio = false
video = true
url = "rtsp://192.168.xx.xx:8081/live/ch0"
rtsp_user = "xxxx"
rtsp_pwd = "xxxxx"
videofmtp = "profile-level-id=42E01F;packetization-mode=1"
}
rtsp-CamTerrasse: {
type = "rtsp"
id = 91
description = "CamTerrasse"
audio = false
video = true
url = "rtsp://user:pass@192.168.xx.xx:8081/live/ch0"
videofmtp = "profile-level-id=42e01f;packetization-mode=1"
Bei der zweiten CamTerrase habe ich die URL mal so eigetragen wie es unter Zoneminder lief.
Im Janus Log steht folgendes
Starting Meetecho Janus (WebRTC Server) v0.9.0
---------------------------------------------------
Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 192.168.xx.xx as local IP...
[WARN] Token based authentication disabled
itializing recorder code
Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, half-trickle, IPv6 support disabled)
TURN REST API backend: (disabled)
[WARN] Janus is deployed on a private address (192.168.0.10) but you didn't specify any STUN server! Expect trouble if this is supposed to work over the internet and not just in a LAN...
Crypto: OpenSSL pre-1.1.0
[WARN] The libsrtp installation does not support AES-GCM profiles
[WARN] No cert/key specified, autogenerating some...
Fingerprint of our certificate:
[WARN] Event handlers support disabled
Plugins folder: /opt/janus/lib/janus/plugins
[WARN] Plugin 'libjanus_audiobridge.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_echotest.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_nosip.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_recordplay.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_sip.so' has been disabled, skipping...
Loading plugin 'libjanus_streaming.so'...
Sessions watchdog started
Joining Janus requests handler thread
JANUS Streaming plugin initialized!
[WARN] Plugin 'libjanus_textroom.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_videocall.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_videoroom.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_voicemail.so' has been disabled, skipping...
Transport plugins folder: /opt/janus/lib/janus/transports
Loading transport plugin 'libjanus_http.so'...
HTTP webserver started (port 8088, /janus path listener)...
[WARN] HTTPS webserver disabled
Admin/monitor HTTP webserver started (port 7088, /admin path listener)...
[WARN] Admin/monitor HTTPS webserver disabled
JANUS REST (HTTP/HTTPS) transport plugin initialized!
[WARN] Transport plugin 'libjanus_pfunix.so' has been disabled, skipping...
Loading transport plugin 'libjanus_websockets.so'...
[WARN] libwebsockets has been built without IPv6 support, will bind to IPv4 only
libwebsockets logging: 0
WebSockets server started (port 8188)...
[WARN] Secure WebSockets server disabled
Admin WebSockets server started (port 7188)...
[WARN] Secure Admin WebSockets server disabled
JANUS WebSockets transport plugin initialized!
[WARN] libnice version outdated: 0.1.13 installed, at least 0.1.15 recommended
WebSockets thread started
[rtsp-CamTerrasse] New video stream! (ssrc=149996275, index 0)
[rtsp-CamHaustuer] New video stream! (ssrc=94148464, index 0)
Creating new session: 8666580308003567; 0x7fc53c0010c0
Creating new handle in session 8666580308003567: 6846312543500239; 0x7fc53c0010c0 0x7fc53c001620
[6846312543500239] Creating ICE agent (ICE Full mode, controlling)
[6846312543500239] The DTLS handshake has been completed
[janus.plugin.streaming-0x7fc53c001340] WebRTC media is now available
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[WARN] [rtsp-CamTerrasse] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamTerrasse] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=935727369, index 0)
[rtsp-CamTerrasse] New video stream! (ssrc=2050315095, index 0)
[WARN] [rtsp-CamTerrasse] 5s passed with no media, trying to reconnect the RTSP stream
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamTerrasse] Reconnected to the RTSP server, streaming again
Vielen Dank für deine Mühe
VG Alex
Zitat von: majestro84 am 05 Februar 2020, 18:02:32
...
ich habe es probiert meine beiden Cams mit deinen Janus Docker zum laufen zu bekommen, leider ohne Erfolg.
Hast du evtl. den ein oder anderen Tipp fü mich.
Hallo Alex, nach der Installation, hast du da mal die Streams getestet die ich zum Testen in der Streaming Config habe? (Highway und Bunny) Haben die gespielt? -> Wenn nicht, liegt es vermutlich am Browser, momentan läufts unter Windows komischerweise nur im Edge. (Unter Android: Edge, Chrome und Fully - habe ich getestet)
Zitat von: majestro84 am 05 Februar 2020, 18:02:32
Der Docker läuft soweit die streamtest seite kann ich aufrufen. Dort sehe ich auch meine angelegten rtsp-Streams.
Wenn ich nun einen davon Starte passiert leider nichts.
Hier mal die Stream Config
rtsp-CamHaustuer: {
type = "rtsp"
id = 90
description = "CamHaustuer"
audio = false
video = true
url = "rtsp://192.168.xx.xx:8081/live/ch0"
rtsp_user = "xxxx"
rtsp_pwd = "xxxxx"
videofmtp = "profile-level-id=42E01F;packetization-mode=1"
}
rtsp-CamTerrasse: {
type = "rtsp"
id = 91
description = "CamTerrasse"
audio = false
video = true
url = "rtsp://user:pass@192.168.xx.xx:8081/live/ch0"
videofmtp = "profile-level-id=42e01f;packetization-mode=1"
Bei der zweiten CamTerrase habe ich die URL mal so eigetragen wie es unter Zoneminder lief.
Variante 2 funktioniert jedenfalls nicht, user und pass müssen in den vorgesehenen Variablen übergeben werden (wie in Variante 1 bei dir.)
Im VLC Player für Windows kann man recht gut prüfen, ob die URLs funktionieren. Du könntest mal nachschauen, ob mit den URLs im VLC ein Video kommt. (da kannst du user und pass sogar weglassen, da kommt falls nötig ein Login Fenster) Im VLC "Strg+N" drücken (von den 4 Reitern in dem Fenster "Netzwerk" auswählen) und dort mal deine URLs testen.
Ich habe die Erfahrung gemacht, dass eine falsche Einstellung für einen Stream in der Streaming Config irgendwie die anderen mitreißen kann. Ich würde mich also herantasten, erst mal einen zum Laufen bringen und dann den zweiten dazu.
Viel Glück noch!
Grüße S
Hallo Sascha
Im Vlc läuft der Stream auf anhiebt natürlich mit Benutzer und Passwort eingabe.
Dein Test Stream läuft leider auch nicht. Aber der Stream geht auch nicht im VLC.
Das mit dem Tipp am PC das nur Edge geht ist schon mal Super ich hätte nur mit Firefox geguckt.
Habe jetzt die Config erst einmal auf ! Stream reduziert. Ich bekomme jetzt folgede Meldungen im LOG
[rtsp-CamHaustuer] New video stream! (ssrc=1952157332, index 0)
Creating new session: 5182987307203176; 0x7f8df80010c0
Creating new handle in session 5182987307203176: 5253337636888115; 0x7f8df80010c0 0x7f8df8001620
[5253337636888115] Creating ICE agent (ICE Full mode, controlling)
[33m[WARN][0m [5253337636888115] ICE failed for component 1 in stream 1, but let's give it some time... (trickle received, answer received, alert not set)
[5253337636888115] The DTLS handshake has been completed
[janus.plugin.streaming-0x7f8df8001340] WebRTC media is now available
[33m[WARN][0m [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=1960758513, index 0)
[33m[WARN][0m [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=1475811090, index 0)
[janus.plugin.streaming-0x7f8df8001340] No WebRTC media anymore
[5253337636888115] WebRTC resources freed; 0x7f8df8001620 0x7f8df80010c0
[5253337636888115] Creating ICE agent (ICE Full mode, controlling)
[33m[WARN][0m [5253337636888115] ICE failed for component 1 in stream 1, but let's give it some time... (trickle pending, answer received, alert not set)
[31m[ERR][0m [dtls.c:janus_dtls_retry:1029] [5253337636888115] DTLS taking too much time for component 1 in stream 1...
[janus.plugin.streaming-0x7f8df8001340] No WebRTC media anymore
ICE und DTLS scheinen hier noch ein Problem zu sein. Liegt es vielleicht an einer älteren libnice Version?
Nutzt du das Dockerfile noch so wie im Git?
VG Alex
Habe heute noch einige Versuche gemacht mit aktueller libnice und auch den Docker Uptodate gebracht (Ubuntu 18.04 usw)
Leider ohne erfolgt.
Die ICE Errors sind nun weg aber der Stream läuft einfach nicht.
Fall Dir noch was einfällt schieß einfach drauf los.
---------------------------------------------------
Starting Meetecho Janus (WebRTC Server) v0.9.0
---------------------------------------------------
Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 192.168.xx.xxx as local IP...
[WARN] Token based authentication disabled
itializing recorder code
Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, half-trickle, IPv6 support disabled)
TURN REST API backend: (disabled)
[WARN] Janus is deployed on a private address (192.168.0.10) but you didn't specify any STUN server! Expect trouble if this is supposed to work over the internet and not just in a LAN...
Crypto: OpenSSL >= 1.1.0
[WARN] No cert/key specified, autogenerating some...
Fingerprint of our certificate: A4:56:C1:06:77:7E:AD:03:3D:B2:53:5C:BE:E6:47:C3:A8:17:32:92:72:32:D5:06:EE:C6:A6:E9:B1:F1:55:71
[WARN] Event handlers support disabled
Plugins folder: /opt/janus/lib/janus/plugins
[WARN] Plugin 'libjanus_audiobridge.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_echotest.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_nosip.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_recordplay.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_sip.so' has been disabled, skipping...
Loading plugin 'libjanus_streaming.so'...
Joining Janus requests handler thread
Sessions watchdog started
JANUS Streaming plugin initialized!
[WARN] Plugin 'libjanus_textroom.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_videocall.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_videoroom.so' has been disabled, skipping...
[WARN] Plugin 'libjanus_voicemail.so' has been disabled, skipping...
Transport plugins folder: /opt/janus/lib/janus/transports
Loading transport plugin 'libjanus_http.so'...
HTTP webserver started (port 8088, /janus path listener)...
[WARN] HTTPS webserver disabled
Admin/monitor HTTP webserver started (port 7088, /admin path listener)...
[WARN] Admin/monitor HTTPS webserver disabled
JANUS REST (HTTP/HTTPS) transport plugin initialized!
[WARN] Transport plugin 'libjanus_pfunix.so' has been disabled, skipping...
Loading transport plugin 'libjanus_websockets.so'...
[WARN] libwebsockets has been built without IPv6 support, will bind to IPv4 only
libwebsockets logging: 0
WebSockets server started (port 8188)...
[WARN] Secure WebSockets server disabled
Admin WebSockets server started (port 7188)...
[WARN] Secure Admin WebSockets server disabled
JANUS WebSockets transport plugin initialized!
WebSockets thread started
[rtsp-CamHaustuer] New video stream! (ssrc=1011994142, index 0)
Creating new session: 2687497555481130; 0x7f75f4001320
Creating new handle in session 2687497555481130: 3060060135836127; 0x7f75f4001320 0x7f75f40018e0
[3060060135836127] Creating ICE agent (ICE Full mode, controlling)
[3060060135836127] The DTLS handshake has been completed
[janus.plugin.streaming-0x7f75f40015e0] WebRTC media is now available
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=1237561953, index 0)
[ERR] [ice.c:janus_ice_outgoing_stats_handle:3889] [3060060135836127] Got 1 SRTP/SRTCP errors in the last few seconds (last error: srtp_err_status_replay_fail)
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=228645649, index 0)
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=571133442, index 0)
[janus.plugin.streaming-0x7f75f40015e0] No WebRTC media anymore
[3060060135836127] WebRTC resources freed; 0x7f75f40018e0 0x7f75f4001320
Destroying session 2687497555481130; 0x7f75f4001320
Detaching handle from JANUS Streaming plugin; 0x7f75f40018e0 0x7f75f40015e0 0x7f75f40018e0 0x7f75f4002b00
[3060060135836127] Handle and related resources freed; 0x7f75f40018e0 0x7f75f4001320
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=1011620062, index 0)
[WARN] [rtsp-CamHaustuer] 5s passed with no media, trying to reconnect the RTSP stream
[rtsp-CamHaustuer] Reconnected to the RTSP server, streaming again
[rtsp-CamHaustuer] New video stream! (ssrc=1704636547, index 0)
Muss in den .js Dateien noch was angepasst werden ausser die Ip?
Port oder so?
Evtl Die Apache Einstellungen?
Muss das Docker Netzwerk als Host sein?
Also der Janus aus dem Repo funktioniert!!!
VM in proxmos installiert, docker installiert, repo geclont, docker-compose durchgeführt und gewartet.
Danach im Edge die Seite aufgerufen und das Bunny Video wird einwandfrei abgespielt.
Zur info noch wenn es wer auf einem Tablet versucht.
Es geht eigentlich nur auf Tablets mit einer eigenen GPU wie zb GPU Mali-T628 MP6.
LG Thomas
OK danke für die Info das Bunny Video läuft bei mir auch nicht im VLC
Welches Docker Image hast du genau genommen? Ich finde diverse janus-gateway images, aber das was du verwendet hast, finde ich auf meinem OMV nicht...
Hallo
Ich habe den Docker noch einmal neu gestartet.
Das heißt vom Git ausgecheckt https://github.com/AlpenFlizzer/janus-gateway-docker (https://github.com/AlpenFlizzer/janus-gateway-docker)
in der docker-compose.yml # entfernt um die Demo mit dem Hasen zu bekommen.
Docker erstellt und gestartet.
Danach folgende Fehler im Log und kein Video zu sehen.
Sessions watchdog started
[ERR] [plugins/janus_streaming.c:janus_streaming_rtsp_connect_to_server:5601] Couldn't send DESCRIBE request: Timeout was reached
[ERR] [plugins/janus_streaming.c:janus_streaming_init:1905] Error creating 'rtsp' stream 'rtsp-test'...
JANUS Streaming plugin initialized!
Also eigentlich alles so wie du es auch gemacht hast Thomas.
Wie gesagt der Stream vom Hasen läuft bei mir auch nicht mit VLC
VG Alex
Zitat
in der docker-compose.yml # entfernt um die Demo mit dem Hasen zu bekommen.
habe ich nicht gemacht, sondern so genommen alles wie aus dem Repo.
Ich bekomme den Bunny Stream so oder so einfach nicht zum laufen immer der gleiche Fehler. Und im VLC läuft er auch nicht.
Und wenn der nicht läuft brauche ich glaube ich mit der Kamera erst gar nicht weiter machen.
Das Problem bei meiner Kamera ist das sie den RTSP-Stream über TCP sendet und nicht über UDP.
Wenn ich es richtig recheriert habe kann Janus nur UDP.
VG Alex
Dieses Detail kannte ich noch gar nicht. Da hatte ich vermutlich "Glück" beim Kamera Kauf.
Inzwischen betreibe ich ohnehin einen extra NVR mit PoE verkabelten Cams. Die Kamerabilder bekomme ich auf einen 13 Zoll Monitor über den HDMI Anschluss des NVR.
"Integrieren" kann man das zwar nicht so 100% aber man kann mit den Alarmeingängen "umschalten", welches Bild gezeigt wird (zB Eventbasiert) oder mittels FTUI Buttons die Bilder durchzappen wie beim Fernsehschauen... :-D
Der Lösung kommt MotionEyeOS zB für den Raspi am nächsten. Siehe auch:
Zitat von: Gerrit am 28 Januar 2020, 18:50:16
Moin,
nachdem meine uralte China-Foscam gestorben war, bei der man noch direkt den MJPEG-Stream abgreifen konnte, musste etwas neues her. Die neue, billige Ezviz-Cam liefert nur rtsp. Lösung für mich war dann die Installation von motioneye https://github.com/ccrisan/motioneye/wiki (https://github.com/ccrisan/motioneye/wiki) auf meinem NUC, auf dem auch FHEM läuft. Funktioniert wunderbar und den umgewandelten Stream konnte ich dann wieder in FTUI/FULLY auf dem Tablet einbinden. Das ganze gibt es auch als komplettes Image (motioneyeos) für den Raspberry.
Gruß Gerrit
Gesendet von meinem ONEPLUS A6013 mit Tapatalk
Gruß, Sascha
PS: Mit dem NVR erlebe ich endlich mal echtes Plug'n'Play ^^
OK danke für deine Antwort.
Motioneye habe ich auch schon ausprobiert allerdings muss ich sagen das Zoneminder für mich besser erscheint. Problem bei der Lösung mit motioneye und Zoneminder ist halt die doch schon hohe Leistungsanforderungen der Software bei drei bis vier Kameras. VG Alex
Zitat von: SB am 28 Januar 2020, 10:35:01
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)
Wo muss man ansetzen, wenn Punkt 1 schon scheitert? ich habe von Github den Code genutzt um mittels Dockerfile den Container zu erstellen. Nach dem Starten kann ich die html Seite auch aufrufen. Aber ein Klick auf "Start" liefert mir nur einen PopUp mit "Probably a network error, is the server down?: [object Object]"
Vorweg mein CAM ist total sch... aber funzt einwandfrei mit folgender FTUI config:
<div style="position:absolute; left:00px; top:750px">
<iframe width="358" height="245" src="http://192.168.178.2/goform/stream?cmd=get&channel=0"></iframe>
</div>
Der Spaß dabei ist die richtige URL zu finden..
Ich suche zurzeit eine Kamera die ich im Fully Browser als Livestream anzeigen lassen kann.
Folgende Kamera kann RTSP, eine Reolink Lumus.
https://www.amazon.de/Reolink-%C3%9Cberwachungskamera-2-Wege-Audio-Bewegungserkennung-SD-Kartenslot/dp/B085NNCWKT/ref=sr_1_16_sspa?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=ip+kamera+audio+outdoor&qid=1589911853&s=ce-de&sr=1-16-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyVVc0MjlJQzlMWUxLJmVuY3J5cHRlZElkPUEwODM4NTYxSTdXWDNERUhES1ROJmVuY3J5cHRlZEFkSWQ9QTEwNDMxMDQxTzEwMkxRUDRMUE5JJndpZGdldE5hbWU9c3BfbXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==
Hat jemand auch eine Reolink Kamera bei dem der Livestream funktioniert?
So wie lese kann der Fully das ja?
Muss man noch den Klimzug mit dem web-server wie am Anfang beschrieben, machen?
Hallo,
ich habe eine Reolink C1 pro. Funktioniert bestens. Allerdings nutze ich diese im Zusammenspiel mit einer Synology Diskstation mit "DS CAM".
Viele Grüße
Jürgen
Hmm, ja ich hab kein Synology. Aber auf der Seite von Reolink sind die Zieladressen der Streams aufgelistet und auch erklärt wie man den in den VLC Player anzeigen lassen kann. Für FHEM gibt es ja auch den VLC als server. Da mach ich mir Hoffnung.
nur zur Info und vielleicht alternativen Lösungsansatz: nachdem ich viel rumgebastelt habe um RTSP zum Laufen zu bringen hab ich es aufgegeben und nutze jetzt wieder MotionEye. Läuft auf dem selben RPI und wandelt das RTSP in einen normalen MPEG-Stream um der dann überall angezeigt werden kann
Zitat von: StephanFHEM am 01 Juni 2020, 21:54:54
nur zur Info und vielleicht alternativen Lösungsansatz: nachdem ich viel rumgebastelt habe um RTSP zum Laufen zu bringen hab ich es aufgegeben und nutze jetzt wieder MotionEye. Läuft auf dem selben RPI und wandelt das RTSP in einen normalen MPEG-Stream um der dann überall angezeigt werden kann
auch auf FTUI fully?
jap klar. Das nutze ich auch damit
Hier meine Darstellung einer Cam mit kleinem Live-Bild und PopUp zur großen Ansicht (ich habe hier imagecover und etwas komische Einstellungen gewählt damit ich nur einen für mich interessanten Bildbereich davon in größer Darstellung sehen kann und der Rest abgeschnitten wird. Normal data-height auf 100 und data-width auf auto stellen und anstatt imagecover einfach image verwenden):
<header class="bg-darkblue">Kamera</header>
<div data-type="popup" data-height="95%" data-width="90%" data-draggable="false" style="overflow:hidden" class="centered">
<div data-type="imagecover" data-url="http://IP:PORT" data-height="calc(90vh)" data-width="100%" data-opacity="1" style="margin-top:-200px" class="nocache"></div>
<div class="dialog">
<header class="bg-darkblue">Kamera</header>
<div class="card items-center centered">
<div data-type="image"
data-url="http://IP:PORT/"
data-size="100%" data-opacity="1" class="nocache">
</div>
</div>
</div>
</div>
Ich interesiere mich für die Reolink lumus. Die kann anscheinend rtsp. Aber auf deren Seite kann die Kamera nicht z. B. Mit dem vlc player angezeigt werden. Deine Antwort macht mir jetzt wieder Hoffnung
Ich habe eine alte Medion Kamera, die per "http://<ip>/videostream.cgi" ein Image zur Verfügung stellt, das sich selbst aktualisiert.
Es wird auch einfach per <img src=... /> in eine Webseite eingebunden.
Der Trick besteht darin, dass man eine mehr oder minder schnelle Abfolge von Snapshots von der Kamera bekommt, die der Browser an der immer gleichen Stelle immer wieder überschreibt.
Der Stream sieht als HTTP/HTML-Code so aus:
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: multipart/x-mixed-replace;boundary=ipcamera
Server: mcdhttpd/1.2
Connection: close
--ipcamera
Content-Type: image/jpeg
Content-Length: <Bildgrösse in Bytes>
<Binärdaten von Bild 1>
--ipcamera
Content-Type: image/jpeg
Content-Length: <Bildgrösse in Bytes>
<Binärdaten von Bild 2>
--ipcamera
Content-Type: image/jpeg
Content-Length: <Bildgrösse in Bytes>
<Binärdaten von Bild ...>
etc.
Zwar sind meine aktuelle Webcams viel schöner, schneller, besser, bunter und teurer als die alten, aber leider können sie einen Livestream eben auch nur als rtsp/rtmp ausgeben.
Deshalb habe ich mir meinen Apache-Webserver genommen und dort ein CGI-Script erstellt, das das obige Verhalten nachstellt.
Funktioniert ziemlich gut!
Script:
#! /bin/bash
exec 2>/dev/null
export WIDTH=640
export HEIGHT=480
for one in $(echo "$QUERY_STRING" | sed 's/&/ /g')
do
k=$(echo "$one" | cut -f1 -d=)
v=$(echo "$one" | cut -f2 -d=)
export $k=$v
done
echo "$SERVER_PROTOCOL 200 OK"
echo "Cache-Control: no-cache"
echo "Content-Type: multipart/x-mixed-replace;boundary=ipcamera"
echo "Server: $SERVER_SOFTWARE"
echo "Connection: close"
echo ""
while [ true ]
do
LEN=$(wget -O /tmp/cam.jpg "http://<webcam-ip>/cgi-bin/api.cgi?cmd=Snap&width=$WIDTH&height=$HEIGHT&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=123456" 2>&1 | grep "Length" | cut -f2 -d' ')
echo "--ipcamera"
echo "Content-Type: image/jpeg"
echo "Content-Length: $LEN"
echo ""
cat /tmp/cam.jpg
done
Das Script habe ich im cgi Verzeichnis von Apache unter dem Namen nph-videostream gespeichert.
Dabei ist das nph- wichtig, es zeigt Apache an, dass es ein Non-Parsed-Header Script ist, bei dem der HTTP-Header vom Script selbst und nicht von Apache generiert wird.
Die URL, die von wget geholt wird, muss natürlich auf die jeweilige Snapshot-URL der eigenen Cam angepasst werden.
Im obigen Fall kann die Größe des Snapshots beim Aufruf bestimmt werden, so dass ich z.B. ein Mini-Image in fhem anzeigen lassen kann und beim Klick auf das Bild ein neues Fenster mit der einer höheren Auflösung aufgeht.
<a href=http://192.168.178.1/cgi-bin/nph-videostream?WIDTH=1024&HEIGHT=768 target=_blank><img width=640 height=480 border=1 src=http://192.168.178.1/cgi-bin/nph-videostream></a>
HI!
Diese Idee hatte ich auch schon, aber ich frage mich wie lange das die SD Karte mitmacht... Deshalb habe ich auf einem zweiten Raspi MotionEye drauf der mit einen mjepeg stream ins Netz stellt welchen man problemlos in FTUI einbinden kann als Livestream...
Moin!
Also ich habe hier wahrgenommen, dass MJPEG Streams wesentlich weniger Ärger in FTUI machen.
Bin gerade auf einer Suche nach einer Cam für die Außenwand neben der Haustür, welche bei Klingeln als Popup Widget angezeigt werden soll...
Die Unifi G3s sind ja dann auch nur mit MotionEye Umweg zu betreiben, da sie lediglich RTSP ausliefern können.
Hat jemand eine Empfehlung für eine Outdoor Kamera mit POE Versorgung, welche nativ MJPEG ausliefert?
Danke und viele Grüße
Nils
Ich glaube, das schon ein paar Mal im Forum geschrieben zu haben: Kauft euch eine Instar-Kamera. Deren mjpeg kann man ohne Umwege in FTUI einbinden. Die neueren Modelle haben einen robusten PIR-Sensor, und per MQTT können sie auch Nachrichten (Alarm) versenden. Damit ist es ziemlich einfach, das Bild der Haustür dann einzublenden, wenn der Sensor anschlägt.
Eine bei mir im geschützten Außenbereich angebrachte IN-8003 läuft seit über einem Jahr problemlos. Zwar war die erste Kamera nach ca. 2 Monaten defekt (Bildstörung, Kamera wurde heiß), wurde aber von Instar einwandfrei ersetzt.
Ich stehe mit Instar nur als zahlender Kunde in Beziehung und halte mich ansonsten für jemanden, der keine Zeit und Lust hat, an vermeintlichen Schnäppchen zu verzweifeln. Tut euch den Gefallen und kauft gleich die passende Hardware. Über die Preise kann man eigentlich nicht meckern.
Beachten sollte man lediglich, die Kameras in FTUI nicht einfach nur ein- und auszublenden, sondern den url-Link zu kappen, um den Netzwerktraffic zu begrenzen.
Hallo,
ich hab eine Reolink 410 Kamera.
Den RTSP Stream mit entsprechender Adresse kan ich im VLC mir anschauen.
Anscheinend kann man ja auch den RTSP Stream auch in Fully anzeigen lassen.
Wie muss den meine DEF ausschauen? Und brauch ich die Plus (gekaufte) Version damit ich den RTSP Stream anzeigen lassen kann?
Ich hab ein Android 7 Tablet
Hi,
wie bekomme ich den meinen RTSP Stream ohne auf einen Link zu klicken in eine Kachel rein?
Aktuell habe ich folgende Def
<div class="large" style="color:white;">CAMERA</div>
<a href="rtsp://user:pw@ip:554//h264Preview_01_main">RTSP Stream</a>
Damit bekomme ich den stream wenn ich auf den link "RTSP Stream" klicke. Das wird aber in Vollbild angezeigt.
Ich würde gerne ohne auf einen link zu klicken das bild in einer kachel anzeigen.
Jemand ne idee?
Zitat von: neyzen am 16 August 2020, 02:14:54
Jemand ne idee?
??? Ähm... also wen ich deine Frage richtig verstanden habe... Du möchtestden RTSP Stream im FTUI darstellen? Das geht nicht... Jedenfalls nicht so einfach , darum gibt es ja diesen Thread hier..
Also ich habe ebenfalls sehr lange mit den RTSP Streams in der Tablet UI rum gemacht, bis ich jetzt (endlich!) die Lösung gefunden habe: Motieneye! Läuft bei mir in einem docker-container und konvertiert fleißig die Streams meiner beiden Reolink-Cams in das MJPG format, sodass ich das ganze in der Tablet UI darstellen kan.
Einstellungen in MotionEye sind selbsterklären, auch wenn die UI etwas gewöhnungsbedürftig ist. Das ganze läuft bei mir seit ~6 Wochen ohne Probleme.
Aber MJPG sind doch Bilddateien. Also aktualisierst du jede Sekunde die Bilder in der FTUI?
Den so mach ich es auch aktuell, aber ohne irgendeine zusätzliches Tool. Bei Reolink kann man über einen link die Bilder direkt abrufen.
MJPEG ist ein stream aus Bildern. Hier muss man nichts manuell aktualisieren. Der zugehörige Sourcecode sieht so aus:
<div data-type="image"
data-url="http://192.168.1.2:8022/"
data-size="100%" data-opacity="1" class="nocache">
</div>
Aha...
Die URL ist dann der Link den du von Motioneye bekommst, der dein rtsp auf mjpg umwandelt?
Ja genau. Hier auch mal beispielhaft die config aus Motioneye als Anhang. Wäre vor einigen Monaten froh gewesen, diesen einfachen Weg zu kennen.
Ich hab noch auf meinem Tablet die App Tinycam pro. Da kann man das auch als websever laufen lassen. Sollte Analog zu deinem Weg auch funktionieren. Aber irgendwie hatte ich noch keine Zeit mich mit dem Weg zu beschäftigen. Das schau ich mir mal an.
Und noch ne Frage. Ist der Stream dann flüssig, oder hakt der mal?
Der Stream ist bei mir so flüssig, wie er eingestellt ist. Die eine cam wird mit 2 Bildern/s die andere mit 5 Bildern/s konvertiert. Selbstverständlich kann man auch mit 20 oder 30 Bildern/s arbeiten, aber das verursacht mir zuviel System- und Netzwerklast. Die 5 Bilder reichen problemlos um Besucher zu erkennen und für den Garten sind 2 Bilder ebenfalls mehr als ausreichend...
Ich hab es jetzt mit tinycam pro ebenfalls zum laufen gebracht. Analog zu deiner Vorgehensweise. Vielen Dank für den Tip.
Der stream ist auf jeden fall flüssiger als mit der Bildaktualisierung jede Sekunde.
Wie ist es den mit dem volllaufen des Speichers, wenn der Stream die ganze Seit läuft. Der Cache Speicher wird vermutlich nach einer Zeit Volllaufen oder?
Ich hab jetzt heute Morgen gesehen, dass das Bild immer wieder Stockt oder es gar kein Stream anzeigt. Ein Tablet Neustart hilft hier nicht. :-\
Hallo zusammen!
Da dieses Thema ja echt einigen schwer unter den Fingernägeln zu brennen scheint, möchte ich meinen aktuellen Ansatz mit euch teilen. Mich würde außerdem interessieren, ob andere dieses Setup auch umgesetzt bekommen... Abgesehen davon, will ich gesagt haben, dass ich keine der anderen vorgeschlagenen Lösungen besser oder schlechter finde! :-) Vorteile dieser Lösung sind unter Anderem Echtzeit, und die Auflösung, welche die Cam unterstützt. (zB Full-HD)
Ich nutze jetzt https://github.com/mpromonet/webrtc-streamer, einen kleinen Server der RTSP Quellen via WebRTC an diverse Browser zuspielt. Frühere Versuche mit dem Janus Mediagateway, welches eigentlich die selbe Aufgabe erledigen soll waren da weniger erfolgreich.
In folgendem Repo habe ich eine relativ fertige und einfache Variante für unsere Zwecke zusammengestellt: https://github.com/AlpenFlizzer/webrtc-streamer-docker-compose. Getestet habe ich wie beschrieben auf einem Raspi 3B und in einer Ubuntu VM auf meinem Proxmox-Server (Intel NUC Pentium Silver J5005).
Mittels "git clone" wird das Repo geclont. Dann muss lediglich in der Datei config.json im Verzeichnis /webrtc-streamer der/die RTSP Urls eingetragen werden und mit "docker-compose up -d" (eventuell ist ein sudo davor nötig - anderes Thema) der Container gestartet werden. Einzige Voraussetzung ist also git, docker und docker-compose (zB sudo apt install -y git docker docker-compose)
Danach kann man die Streams im Browser zB fully, Chrome, Firefox, etc. unter http://<ip-webrtc-streamer-server>:8000 ansehen. Standardmäßig ist ein Demo Stream dabei...
Die Datei demo.html kann als Vorlage für die Integration in FTUI verwendet werden.
Wichtige Infos: wenn die FTUI per https angesurft wird, muss auch der webrtc-streamer https gesichert sein - Mixed Content ist nicht erlaubt in Fhem. Passwortgesicherte RTSP Urls einfach mit rtsp://user:passwd@<rtsp-ip>/bla/bla in die config.json eintragen.
Vielleicht hilfts ja wem.
LG Sascha
Zitat von: Thomas41587 am 30 September 2020, 14:08:20
MJPEG ist ein stream aus Bildern. Hier muss man nichts manuell aktualisieren. Der zugehörige Sourcecode sieht so aus:
<div data-type="image"
data-url="http://192.168.1.2:8022/"
data-size="100%" data-opacity="1" class="nocache">
</div>
Ich will mal zwischendurch
danke sagen: Dein Codebeispiel hat mir sehr geholfen.
(Ich habe auf mehreren RPi Zero mit Kamera MotionEyeOS laufen. Die Bewegungserkennung wird von dort zu einem Reading in FHEM. Dieses wiederum wird in FTUI bei erkannter Bewegung als Schaltfläche angezeigt. Wenn ich nun darauf klicke, bekomme ich ein popup - mit dem Stream, dank Deines Codebeispiels.)
Hallo Sascha,
ich wollte den Stream auf einer https:\\.... Seite darstellen.
Leider finde ich keine Infos wie man den webrtc-streamer https gesichert aufruft...
Hat da jemand einen Link/Tip?
Servus,
ich habe https in meinem Repo jetzt eingepflegt. Versuchs nochmal.
Man kann mittels "command" Option in der docker-compose.yml die start-flags vom webrtc-streamer anpassen - unter anderem https Port und den Pfad zu dem Zertifikat/Key.
Grüße, Sascha
Hallo Sascha,
danke für deine schnelle Antwort.
Ich habe nochmals die Schritte durchgeführt ( "git clone" das Repo geclont) und die config.json angepasst.
Dann wie in der Datei
/root/webrtc-streamer-docker-compose/webrtc-streamer/ssl/Readme.md
beschrieben die Zertifikate erzeugt. Nach "docker-compose up -d" sehe ich den Stream weder auf
http://192.xxx.xxx.xxx:8000
noch auf
https://192.xxx.xxx.xxx:9000
Da ich zwischendurch die Formatierung der docker-compose.yml verhauen habe, habe ich die Datei auf der Seite http://www.yamllint.com/ gecheckt.
Nach dem ich das wieder gerichtet habe, habe ich folgende Ausgabe erhalten, auf jeden Fall fehlerfrei....
---
services:
webrtc-streamer:
command:
- "-a"
- "-C"
- config.json
- "-H"
- "8000,9000s"
- "-c"
- /app/ssl/server.pem
container_name: webrtc-streamer
image: "mpromonet/webrtc-streamer:latest"
network_mode: host
restart: always
volumes:
- "./webrtc-streamer/config.json:/app/config.json"
- "./webrtc-streamer/ssl/:/app/ssl/"
version: "3"
Ich habe die Dateien aus dem Verzeichnis "/root/webrtc-streamer-docker-compose/webrtc-streamer/ssl/" in das Verzeichnis "/app/ssl/" kopiert.
Unter Chrome bekomme ich (egal ob http und https Zugriff) die Mitteilung:
Zitat
Die Website ist nicht erreichbar
192.xxx.xxx.xxx hat die Verbindung abgelehnt.
Benutze ich die "alte" docker-compose.yml kann ich den Stream mit http... wieder anschauen.
Edit:
Es reicht aus , wenn ich die Zeile
command: [ "-a", "-C", "config.json", "-H", "8000,9000s", "-c", "/app/ssl/server.pem"]
gegen
command: [ "-a", "-C", "config.json"]
tausche. Dann funktioniert der http zugriff wieder
Hast du noch einen Tipp für mich?
Güße
Michael
Der Entwickler hat vor ein paar Tagen ein Image veröffentlicht, das mit SSL Probleme hatte. Das Problem hat er gestern oder vorgestern mit einem neuen Image behoben, aber ich vermute du hast noch das alte...
Mein Vorschlag wäre, du löschst das bestehende Image vom webrtc-streamer und den Container auch. Dann clonst du das Repo, erzeugst im Ordner webrtc-streamer/ssl gemäß der Anleitung die Zertifikate und den Key und startest dann den Container mit docker-compose.
Wichtig ist dabei, dass du bevor du eventuelle Änderungen für deine Produktivumgebung erst einpflegst, wenn du das Zeug mal laufen hast. Diesbezüglich rate ich also im ersten Schritt davon ab, die docker-compose.yml zu ändern, oder nur um ein Beispiel zu nennen, Key und Zertifikat anders zu erzeugen. Das kann man im nachhinein alles immernoch machen. :-)
Ich würde jetzt:
1. docker stop webrtc-streamer
2. docker rmi -f mpromonet/webrtc-streamer:latest (am besten du nutzt autocomplete mit der TAB Taste, wenn du mehrmals TAB drückst zeigt er dir alle Möglichkeiten)
3. docker rm -f webrtc-streamer
4. das Repo löschen. (rm -r)
5. das Repo neu clonen und dann wie oben beschrieben
Wie du geschrieben hast, kann man mit "command: [bla, bla, bla]" die Konfiguration des webrtc-streamer ändern.
command: [ "-a", "-C", "config.json"] entspricht der Standardkonfiguration, die im original Image vorgegeben ist.
mit command: [ "-a", "-C", "config.json", "-H", "8000,9000s", "-c", "/app/ssl/server.pem"] kann man diese originale Konfiguration im Nachhinein überschreiben.
Versuch mal dein Glück. Es sollte eigentlich recht straight forward sein.
Grüße, Sascha
Hallo Sascha,
mach ich nach dem Einkauf sofort ;)... und vielen Dank für deine schnelle Antworten und deine Unterstützung :D :D
Gestern hatte ich dein Repro geklont, soll ich heute nochmals dein Repro nehmen?
https://github.com/AlpenFlizzer/webrtc-streamer-docker-compose |
Theoretisch musst du nicht, aber ich kann Probleme natürlich besser einordnen, wenn wir auf dem selben Stand sind. Wenn bei dir alles unverändert ist, außer zB die SSL Zerts und Keys brauchst du nicht neu clonen.
In diesem Sinne, würde in deinem Fall auch eventuell ein "docker pull mpromonet/webrtc-streamer:latest" reichen im das neueste Image zu ziehen.
Grüße, Sascha
Hallo Sascha,
habe jetzt alles noch mal neu installiert ... geht nur wie oben beschrieben mit der Zeile:
command: [ "-a", "-C", "config.json"] |
Mit der Zeile
command: [ "-a", "-C", "config.json", "-H", "8000,9000s", "-c", "/app/ssl/server.pem"] |
komme ich nicht einmal über den http Link (....:8000) an den Stream. Das sollte doch immer gehen, oder?
Ich habe auf meiner Bannane Armbian Buster installiert, update und upgrade gemacht.
Hier die Infos zum Docker:
docker version
Client: Docker Engine - Community
Version: 20.10.2
API version: 1.41
Go version: go1.13.15
Git commit: 2291f61
Built: Mon Dec 28 16:19:01 2020
OS/Arch: linux/arm
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.2
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8891c58
Built: Mon Dec 28 16:16:42 2020
OS/Arch: linux/arm
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker-compose version 1.21.0, build unknown
docker-py version: 3.4.1
CPython version: 3.7.3
OpenSSL version: OpenSSL 1.1.1i 8 Dec 2020
Wenn du noch mehr Infos benötigst einfach bescheid geben
Grüße
Michael
Poste bitte mal die Ausgabe von "docker logs webrtc-streamer"
EDIT:
Bin dem Problem nochmals nachgegangen. Habe auch den Entwickler auf Github kontaktiert. Er hat alles aufs neueste Ubuntu gezogen und deshalb gab es noch paar Probleme mit Abhängigkeiten.
Jedenfalls hat er heute das Problem gelöst. Ich hab die neuesten Images auf einem Raspi 2 und einem Raspi 3 getestet und https hat funktioniert. Da der Banana Pi Pro den selben Prozessor und dementsprechend den selben Befehlssatz hat wie der Pi2 gehe ich davon aus, dass das Zeug bei dir geht wenn du nochmal ein "docker pull mpromonet/webrtc-streamer:latest" machst. Dann mal neu starten und schauen ob es geht.
Sollten alle Stricke reißen, habe ich Key und Zert für den Demobetrieb direkt in mein Repo hinzugefügt. Damit kann man jetzt einfach clonen, starten und sollte schon gehen.
Grüße, Sascha
Hallo Sascha,
Danke an dich und dem Entwickler, jetzt kann ich die Seite in Firefos aufrufen :)
Da ich inzwischen alles nochmals gelöscht hatte, habe ich dein Repro nochmals komplett übernommen.
Allerdings wird der rtsp Stream meiner Reolink RLC-520
xxx.xxx.xxx.xxx:558/h264Preview_01_sub nicht angezeigt.
Der Stream meiner hiCam S5 wird ordentlich dargestellt.
xxx.xxx.xxx.xxx:554/onvif2
Im VLC Player kann ich beide Kamera Streams ansehen...
Im docker logs webrtc-streamer bekomme ich die folgende Meldung:
: RTSPVideoCapturer:onError url:rtsp://User:password@192.168.xxx.xxx:558/h264Preview_01_sub error:401 Unauthorized
Created new TCP socket 11 for connection
Failed to DESCRIBE: 401 Unauthorized
Wie gesagt, gebe ich den selben Link im VLC Player ein geht das problemlos. Copy and Paste... ???
Freut mich dass es jetzt klappt...
Die Fehlermeldung ist eindeutig. Der Login klappt nicht... Mich wundert deine URL, eventuell mal mit einer anderen versuchen? zB rtsp://admin:password@ip_address:554//h264Preview_01_main von https://support.reolink.com/hc/en-us/articles/360007010473-How-to-Live-View-Reolink-Cameras-via-VLC-Media-Player
Testweise könntest du mal das Passwort entfernen oder einen User anlegen, der keinen Login braucht, um zu schauen, auf welcher Seite das Problem auftritt. Ich habe Hikvision Kameras auf einem Hikvision NVR und Streame die Streams vom NVR. Das klappt einwandfrei.
VLC Player ist ein Hund, der frisst buchstäblich alles - schwer da mitzukommen... Jedenfalls immer bedenken, dass h265 im Web-Rtc Standard noch nicht spezifiziert ist, also wenn dann h264 streamen.
Grüße, Sascha
Bezüglich deiner Reolink.
Ich habe eine RLC-422 und in der ersten Version des WebRtc integriert gehabt.
Habe noch keine Zeit gefunden den neuen zu clonen und mich damit zu spielen.
Aber das sollte keinen Unterschied machen
Denke auch das es da mit dem Login Probleme gibt.
Ich rufe meine mit diesem Link auf : rtsp://user:pass@x.x.x.x:554//h264Preview_01_main
LG Thomas
Hallo Sascha, Hallo Thomas,
meine URL war schon richtig,
rtsp://user:pass@x.x.x.x:558//h264Preview_01_sub
allerdings hatte ich den User "FHEM-Kamera-RLC520-1" genannt... - im User ist hier keine gute Idee :-[
Ich mach das immer so mit Sonderzeichen im Namen und Passwort, hier ging das schief :-\.
Beim Passwort habe ich "*" bzw "#" bzw "_" und "-" getestet, geht. Im Passwort funktioniert auch der Bindestrich.
Edit:
Das mit dem Sonderzeichen im Namen ist doch kein Problem, nach dem ich ein wenig mit den Einstellungen "gespielt" hatte, scheint es an der Länge des Usernamen zu liegen..
Edit2:
Ich habe nun folgende "User" angelegt:
"Eingang" : {"video": "rtsp://123456789:WebCAM@192.xxx.xxx.xxx:558/h264Preview_01_sub"},
"Eingang10" : {"video": "rtsp://1234567890:WebCAM@192.xxx.xxx.xxx:558/h264Preview_01_sub"},
"Eingang11" : {"video": "rtsp://12345678901:WebCAM@192.xxx.xxx.xxx:558/h264Preview_01_sub"},
"Eingang12" : {"video": "rtsp://123456789012:WebCAM@192.xxx.xxx.xxx:558/h264Preview_01_sub"},
Eingang und Eingang10 werden angezeigt -> Der Username darf maximal 10 Zeichen lang sein... 8)
Edit 3:
Jetzt geb ich es auf
Geht nicht:
"Eingang" : {"video": "rtsp://FHEM-RLC:#TestPassw1234#@192.... bla blah
Geht auch nicht:
"Eingang" : {"video": "rtsp://FHEM-RLC:#TestPassw#@192.... bla blah
Geht auch nicht:
"Eingang" : {"video": "rtsp://FHEM-RLC:TestPassw@192.... bla blah
Das geht aber:
"Eingang" : {"video": "rtsp://FHEMRLC:TestPassw@192.... bla blah
Jetzt mach ich einen ganz einfachen USER mit einem ganz einfachem Passwort...
LG
Michael
Na wenigstens funktioniert es jetzt.
Wieso verwendest du den SubStream?
Ist da ein Qualitätsunterschied zu merken ob Sub oder Main?
LG Thomas
Zitat von: Funsailor am 25 Januar 2021, 13:50:25
Jetzt mach ich einen ganz einfachen USER mit einem ganz einfachem Passwort...
Nur weil ein Passwort (oder Username) keine Sonderzeichen enthält, ist es noch nicht unsicher... Dazu vllt ein witziger Cartoon, falls du ihn nicht eh kennst...
https://xkcd.com/936/
Du kannst ja noch auf deine Methode herausfinden, wie lange ein Passwort sein darf und dann könntest du dir User und Passwort nach dem xkcd Schema anlegen. (in den jeweiligen maximalen Längen) :-)
Freut mich, dass es jetzt läuft.
LG Sascha
Hallo Sascha,
ich habe jetzt festgestellt, das der "Snapshoot" mit
nicht mehr geht wenn der "webrtc-streamer" läuft...
Die Kamera habe ich in FHEM mit
define IPCam_RLC520_1 IPCAM 192.168.xxx.yyy |
definiert, der path lautet
cgi-bin/api.cgi?cmd=Snap&width=2560&height=1920&channel=0&rs=12345&user=xyz&password=uvw |
Im Bewegungsmelder habe ich ein Notify mit
...:motion { ... "get IPCam_RLC520_1 image"...
definiert. Das Bild wird nur bei gestopptem webrtc-streamer geschossen....
Nebenbei zum Passwort:
Wenn man irgendwo ein Passwort eingibt, springt die "Sicherheitsanzeige" sehr oft erst von "Sicher" auf "sehr Sicher" wenn man Sonderzeichen benutzt.
LG Michael
@Funsailor
Hast du noch immer das Problem mit dem Snapshot??
Habe es mal kurz nachgestellt
Ich habe eine Reolink 422.
WebRtc läuft bei mir und Cam ist in Fhem auch eingebunden im IPCAM-Modul.
IPCAM-Modul: path
cgi-bin/api.cgi?cmd=Snap&channel=0&rs=XXX&user=XXX&password=XXX
Config.json im WebRTC: "video":"rtsp://XXX:XXX@x.x.x.x:554//h264Preview_01_main"
WebRtc läuft, Zugriff über die Html Seite, VLC parallel und dann Snapshot funktioniert ohne Probleme.
LG Thomas
Hallo Thomas,
danke für deine Hinweise.
Ja, geht immer noch nicht parallel, ich überprüfe die Einstellungen wenn ich mein Smartvisu Problem erledigt habe Oder nebenbei. Bin im Moment aber zu müde,
Gruß
Michael
Zitat von: AlpenFlizzer am 25 Januar 2021, 16:40:35
Nur weil ein Passwort (oder Username) keine Sonderzeichen enthält, ist es noch nicht unsicher... Dazu vllt ein witziger Cartoon, falls du ihn nicht eh kennst...
https://xkcd.com/936/
Du kannst ja noch auf deine Methode herausfinden, wie lange ein Passwort sein darf und dann könntest du dir User und Passwort nach dem xkcd Schema anlegen. (in den jeweiligen maximalen Längen) :-)
Freut mich, dass es jetzt läuft.
LG Sascha
Hallo Sascha,
das Sonderzeichen und Co ein Passwort sicherer machen ist für mich eigentlich noch gültig:
ZitatWir empfehlen, dass man starke Passwörter verwendet, die sehr lang sind, sowie Buchstaben, Zahlen und Sonderzeichen enthalten. Zusätzlich muss man für jedes Konto ein individuelles Passwort verwenden. Außerdem ist es eine gute Idee, eine Multi-Faktor Authentifizierung zu nutzen, um den eigenen Schutz noch zu verbessern", sagt Chad Hammond, Sicherheitsexperte bei NordPass.
Ganzer Artikel hier:
https://www.elektroniknet.de/kommunikation/mit-dieser-methode-werden-beliebte-passworter-gehackt.182811.html
Gruß
Michael
Hallo Thomas,
ich nutze den "h264Preview_01_sub" Stream der Kamera im WebRTC, da ist das Bild ohne weitere Einstellungen kleiner.
Um den "Fehler" einzukreisen, habe ich zuerst komplett deine Einstellung genommen und habe den "h264Preview_01_main" Stream genommen ...
Siehe da, es geht wieder...
Ich war aber der Meinung, das es mit meiner Einstellung auch schon mal lief.
Da ich Zeit hatte, Kommando zurück und wieder den Sub Stream genommen... upps geht auch wieder...
Seltsam, das werde ich mal beobachten.
Gruß
Michael
Zitat von: AlpenFlizzer am 27 Dezember 2020, 14:31:37
In folgendem Repo habe ich eine relativ fertige und einfache Variante für unsere Zwecke zusammengestellt: https://github.com/AlpenFlizzer/webrtc-streamer-docker-compose. Getestet habe ich wie beschrieben auf einem Raspi 3B und in einer Ubuntu VM auf meinem Proxmox-Server (Intel NUC Pentium Silver J5005).
Mittels "git clone" wird das Repo geclont. Dann muss lediglich in der Datei config.json im Verzeichnis /webrtc-streamer der/die RTSP Urls eingetragen werden und mit "docker-compose up -d" (eventuell ist ein sudo davor nötig - anderes Thema) der Container gestartet werden. Einzige Voraussetzung ist also git, docker und docker-compose (zB sudo apt install -y git docker docker-compose)
Das klingt sehr interessant und ich habe ein/zwei Fragen dazu. Aktuell nutze ich motion mit einer Cam und wollte jetzt eine zweite Cam einbinden. Ich hab aber das Gefühl, dass Motion mit zwei Cams etwas komplexer ist und entsprechend Systemressourcen verbraucht. Alles was ich brauche ist auch nur genau der von dir beschriebene Stream ohne den anderen Kram.
Jetzt meine Fragen:
1. ist es möglich zwei RTSP-streams einzubinden und zB einen über Port 8000 und den anderen über Port 8001 darzustellen?
2. ich kenne mich noch gar nicht mit Docker aus. Und Linux eher auf Anfänger-Level. Ich hab die Pakete mit "sudo apt install -y git docker docker-compose" installiert. Wie genau kann ich jetzt den Container erstellen und das Git clonen?;-)
Hallo.
Zu Frage 1: Das Ganze funktioniert gänzlich anders. Auf Port 8000 lauft der webrtc-streamer. Deine Webseite (zB FTUI) ruft mittels JavaScript einfach den Stream vom Port 8000 ab, der gewünscht wird. Im Repo gibt es eine Datei demo.html, da ist das ersichtlich.
Zu Frage 2: Eigentlich steht die Antwort sogar im, von dir zitierten Text drin... ;-)
git clone https://github.com/AlpenFlizzer/webrtc-streamer-docker-compose.git
cd webrtc-streamer-docker-compose #in diesem Ordner findest du auch die erwähnte config.json und demo.html
docker-compose up -d #eventuell sudo davor
#abwarten
docker ps #zeigt ob der container läuft
#in einem browser http://<ip-deines-servers>:8000 ansurfen und mal den webrtc-streamer befummeln
Sorry dass ich nicht mehr Support geben kann, da fehlt mir grad etwas die Zeit. :-) Grundsätzlich sollte ein Minimum an git und Docker Know-How vorhanden sein, dann flutscht das - ich habe auch im Code ordentlich kommentiert denke ich.
Gruß S
Danke für deine Zeit! Das sieht schon eher so aus, dass ich damit etwas anfangen kann. Hab es vorher echt nicht gesehen. Ich probier es mal aus. Wenn ich es jetzt richtig verstanden habe, werden die beiden Streams als beide auf Port 8000 geleitet und ich kann dort beide abgreifen. Ich schau mir mal die Demo an.
Hallo,
hab versucht es nach der Beschreibung umzusetzen und ich erreiche auch meinen server:8000 und sehe, dass dort Streams auswählbar sind. Leider starten die Streams nicht.
In den Logs erhalte ich folgende Fehlermeldung:
webrtc Peer Connection Manager.cpp:660: Failed to initialize PeerConnection
in einer LiveDemo im Internet geht es... es kann also nicht an meinem Browser liegen. Was kann ich da jetzt machen?
Args.... Ich bekomme es immer noch nicht zum Laufen. Habs über versucht über die Installation vom original webrtc-streamer zu lösen aber nach einer Gefühlten Ewigkeit konnte ich nicht weiter machen weil cmake nicht installiert war... da war dann auch freundlicherweise die HDD komplett voll wegen chronium cache....
Hat nicht dich noch einer den entscheidenen Tipp wieso die Stream nicht starten? Mein Browser ist ok sonst würde die Live-Demo nicht laufen. Die Peer-Verhandlung scheint auch zu gehen....
Was mir noch aufgefallen ist: webrtc in der Live Demo ist eine neuere Version als die aus dem Docker. Kann man das aktualisieren? Vielleicht löst es sich dadurch.
Und ich nutze kein HTTPS und die Demo Streams sind auch PW frei... daran kann es also auch nicht liegen
neuer Ansatz: mit einem alten Raspi3 und komplett neu aufgesetztem Raspbian läuft es.
Ich kann in FTUI3 aber den Tag <video id="video" muted autoplay></video>
nicht einbinden bzw. er zeigt mir nichts an. Muss ich da noch etwas beachten?
hallo zusammen,
stell mich grade glaub bissl blöde an ...
also den leichten teil habe ich geschafft, webrtc-streamer läuft, ich kann über http://<ip>:8000 zugreifen und sehe meine cam.
aber jetzt bin ich zu blöde das ding in FHEM zu bringen ^^
letztlich anzeigen würde ich sie gerne in FHEMAPP - aber das zeigt mit der Adresse nix an wenn ich ihm die adresse übergebe:
http://<ip>:8000/webrtcstreamer.html?video=Hof
thx
Jens
Hallo Zusammen,
ich habe Kameras verschiedener Hersteller am Laufen. Alle funktionieren für sich relativ gut in FTUI. Allerdings sind die Kameras in ihrer Rechenleistung beschränkt und kommen schnell an die Grenzen wenn ein Stream öfter (bei Reolink reichen 2 Streams, bei Instar ist bei 3 schluss) abgegriffen wird.
Da alle Streams sowieso bei der QVR Pro Surveillance Station (QNAP) zusammen laufen würde ich gerne die Streams über die Station abgreifen. Die hat mehr als genug Leistung. Die Station kann Streams als HTML oder RTSP Stream freigeben. Allerdings haben meine bisherigen Lösungsversuche nicht geklappt.
Scheinbar ist die Lösung aus dem Thread nicht so das wahre, ist aber auch schon etwas älter. Gibt es mittlerweile eine gute Lösung?
Viele Grüße
Ich kann zwar keine generelle Antwort zu sämtlichen vorgeschlagenen Lösungen geben, aber die WebRTC Lösung ist mangels Stabilität und auch Komplexität der Umsetzung bzw. Ressourcen Anforderungen zwar eine Lösung die echte realtime Kamerastreams in HTML erlaubt, aber unterm Strich nicht wirklich eine Empfehlung wert ist. Obwohl ich selbst ordentlich Zeit in diverse Ansätze gebuttert habe... :-D
Wenn dein QNAP den Stream via HTML anbieten kann, sollte der doch mittels <video> tag eingebunden werden können oder? RTSP wird wohl fürchte ich nie von Browsern nativ unterstützt werden...
Gruß S
Hallo Alpenflitzer,
jetzt habe ich die 9 Seiten durchgelesen in der Hoffnung nun eine Lösung für das RTSP-Problem zu haben, aber jetzt schreibst Du, dass es nicht empfehlenswert ist aufgrund "Stabilität und Komplexität".
Ich möchte 5 Kameras mit RTSP H264 in Fully einbinden. Läuft das mit webrtc zuverlässig auf dem Raspy 3, auf dem auch FHEM läuft ?
Gruss
Joe
Hallo!
Ich kann das leider nicht konkret beantworten, ich kann dir aber sagen, dass der oben vorgeschlagene WebRTC-Streamer gut und stabil funktioniert, aber auch reichlich Ressourcen braucht. Ich würde es ungetestet einem RPI3 nicht zutrauen 5 (FullHD?) Cams zu streamen, wobei hier noch entscheidend ist, wie oft du die Streams abrufst.
Alles andere wurde bereits gesagt glaube ich. Man muss einen WebRTC-Service laufen lassen, und den Javascript Client in seine Homepage (zB FTUI) einbauen. Beides hat bewiesen, dass es manchmal nicht reibungslos klappt.
Leider, auch zu meinem Ärgernis ist das Thema glaube ich relativ Geschichte bis HTML RTSP spricht (was die meisten Cams sprechen) - also vermutlich nie??
Ich habe einen Hikvision NVR und mittels HDMI->Lan Adapter einen 13 Zoll Monitor im Wohnzimmer angehängt. Mittels Alarmkontakte, die ich via Fhem steuere kann ich auch 5 verschiedene Cams auf dem Monitor Fullscreen anzeigen
Mittlerweile ist das Setup meine Empfehlung...
LG
Oder als Alternative zu einem echten NVR irgendwo ein Android Gerät mit der App IP Cam viewer laufen lassen. Die hat einen eingebauten Webserver, dort kann man für alle Kameras dann einen Live-View, das letzte Jpg oder Mjpeg Stream abgreifen. Das geht auch wenn die Kamera eigentlich nur einen RTSP Stream liefert.
Das kann jetzt auf einem alten Smartphone oder Tablet laufen, praktischerweise vielleicht besser auf einem TV Stick oder einer TV Box. Zum Anzeigen muss das keine besondere Leistung haben, vielleicht etwas mehr wenn man auch den Record Mode oder Motion Detection nutzt.