jensweigele / ioBroker.yahka

Yet another HomeKit adapter for ioBroker
MIT License
132 stars 47 forks source link

Kein Videostream nur Standbilder #388

Open Strobel2k opened 1 year ago

Strobel2k commented 1 year ago

Moin!

Ich konnte erfolgreich 3 Reolink Kameras in Home einfügen. Leider bekomme ich aber nur Standbilder. Sobald ich den Stream öffne dreht der Ladekreis für ein 1-2 Minuten und danach kommt die Fehlermeldung keine Verbindung.

In ioBroker bekomme ich folgende Meldung.

  | [Video] ffmpeg exited with code: 1 and signal: null (error) -- | --

Woran kann das liegen? Hier die Einstellungen: yahka cam

Über VLC bekomme ich einen zufriedenstellenden Stream mit Ton.

Danke Gruß

gfacek commented 1 year ago

Bei mir lag es daran, dass kein ffmpeg installiert war. Allerdings ist meine VM auf der Synology NAS nicht performant genug gewesen. CPU zu 100% ausgelastet, schon bei einer Kamera. :)

Bastians-Bits commented 1 year ago

Gibt es hierzu irgendeine Lösung? Habe das gleiche Problem, meine IP Kamera über RTSP wird erkannt und ich bekomme in HomeKit alle 10 Sekunde einen neuen Snapshot. Versuche in einen Stream zu öffnen, bekomme ich im Log nur ein [Video] ffmpeg exited with code: 1 and signal: null (error). Ein ps aux im Container im richtigen Moment gab dann auch den dazugehörigen ffmpeg Befehl:

ffmpeg
-nostats
-nostdin
-y
-re
-i rtsp://<Benutzername>:<Password>@<IP Kamera>:554/Streaming/Channels/101
-an
-sn
-dn
-codec:v libx264
-pix_fmt yuv420p
-r 30
-f rawvideo
-tune zerolatency
-vf scale=1280:720
-b:v 299k
-bufsize 299k
-payload_type 99
-ssrc 4301030
-f rtp
-srtp_out_suite AES_CM_128_HMAC_SHA1_80
-srtp_out_params ygvBkNwEWeD9xw+Lr4FUgOS+0K7sVNdh1/gCkH1b
srtp://<IP Notebook mit Home>:57505?rtcpport=57505

ffmpeg ist mittels PACKAGE Umgebungsvariable bereits installiert.

Umgebung: Irgendeine HikVision Kamera mit RTSP Stream I/O Broker in Docker, Version 6.3.5 YAHKA, Version 0.17.0

dreamerxch commented 1 year ago

Auch ich habe dieses Problem, die Standbilder kommen problemlos rein, so ca. alle 10sek. aber der LiveStream wird nicht geladen und der gennante Error im Log wegem ffmpeg erscheint auch bei mir. Ich habe 8 Reolink Kameras im Einsatz und 1 Dahua. Einzig bei der Dahua Cam funktioniert der LiveStream, bei den Reolink Cams keine Chance.

bloop16 commented 1 year ago

Selbes Problem sobald ich in Yahka Audio aktiviere. Ohne Ton funktioniert der Stream einwandfrei.

valiumbrause commented 1 year ago

Selbes Problem. Gibt es da nicht mal eine gute Anleitung um die Cams zum laufen zu bekommen ? Live Bild funktioniert leider absolut nicht. Nutze zwei Tapo cams. Es wäre sehr nett, wenn der Entwickler bezüglich Kameras einbinden darauf eingehen würde

merasil commented 1 year ago

Hi, evtl. hab ich ne Lösung! Unter Streameigenschaften alles so eintragen wie ihr den Stream bekommt. Sprich Auflösung sollte genau dem entsprechen was die Kamera liefert etc. Quelle/Source ist die rtsp-url eurer Kamera. Anzahl der Streams hab ich auf 1. Ich weiß leider nicht genau was diese Option ändert. Ich hatte erst gedacht, dass man da den Substream oder so was eintragen kann, aber scheinbar geht das irgendwie anders. Codec sollte egal sein, da der in dem Livestream selbst gesetzt wird. Zur Sicherheit kann man ihn aber auf libx264 stehen lassen.

[ "-rtsp_transport", "tcp", "-i", "${source}", "-vcodec", "copy", "-an", "-sn", "-dn", "-payload_type", "${payloadtype}", "-ssrc", "${targetVideoSsrc}", "-f", "rtp", "-srtp_out_suite", "AES_CM_128_HMAC_SHA1_80", "-srtp_out_params", "${videokey}", "srtp://${targetAddress}:${targetVideoPort}?rtcpport=${targetVideoPort}&localrtcpport=${targetVideoPort}&pkt_size=${mtu}" ]

das ist meine config für den bewegten LiveStream. Das sollte mit allen Kameras funktionieren die einen reinen h264-Stream (kein h264+, super oder ähnliches) liefern. Der Vorteil ist, dass hier der Stream einfach komplett durchgereicht wird und keine Last auf dem ioBroker Server entsteht.

Timmes123 commented 1 year ago

die lösung von merasil funktioniert für mich perfekt. allerdings nur ohne ton. mit ton gibts wieder den fehler, hast du für den ton eventuell auch ne brauchbare einstellung ? :)

merasil commented 1 year ago

Leider nicht, da ich den bisher nicht benötigt habe. Die Config habe ich mir mittels Scrypted zusammengebaut. Wenn man dort die Kamera hinzufügt und dann bei homekit auf transcode stellt, kann man in der Console dann einen ffmpeg ähnlichen Befehl sehen. Evtl. geht das auch für den Audio-Part. Ich hab Scrypted aktuell nicht mehr installiert, sonst hätte ich schauen können.

Bastians-Bits commented 1 year ago

@merasil Vielen Dank für die Lösung! Es funktioniert mit den meisten meiner Kameras :) Leider ist es meinem Fall nicht 100% die Lösung, da meine Kameras nur 2 gleichzeitige Streams zulassen :(

Es wäre trotzdem schön vom Ersteller nicht den Stdout von ffmpeg in's Nirvana zu schreiben, sodass man nachvollziehen kann, warum ffmpeg den Stream nicht laden konnte. Selbst mit Silly Logging bekommt man nur die Meldung, dass ffmpeg einen Error-Code zurückgegeben hat.

Bastians-Bits commented 1 year ago

Okay, für jeden den es interessiert: Geht in euer IO Broker Verzeichnis -> node_modules/iobroker.yahka und öffnet main.js. In Zeile 2836 (Methode handleStreamRequest) gibt es die auskommentierte Zeile this.FLogger.debug("FFMPEG:" + data.toString('utf8'));. Entfernt den Kommentar (//) und startet IO Broker neu. Das spamt extrem das Log, würde es also nicht dauerhaft aktiv lassen, zeigt aber den Stdout von ffmpeg. Macht das debuggen von Fehlern um Welten einfacher!