Ankündigung

Einklappen
Keine Ankündigung bisher.

Video Stream to Gira TKS IP Gateway

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Video Stream to Gira TKS IP Gateway

    Hallo zusammen,

    da im anderen Thread das nicht wirklich sinnvoll aufgehoben war, hier nochmal meine Lösung um sämtliche Kamera Stream so aufzubereiten, dass das Gira TKS IP Gateway es entgegen nimmt.

    Getestet habe ich es mit folgenden Kameras (gebt Bescheid wenn ihr eine andere Kamera getestet habt):
    - Unifi G4 Bullet
    - Unifi G4 Pro
    - Hikvision 2032

    Wir haben das ganze auch als docker container für euch gebaut:

    https://github.com/weidi/stream2giratksip

    Einfach das docker-compose file ausm git-repo verwenden.
    Settings im Gira TKS IP Gateway bleiben die selben.

    Für alle die es selber bauen wollen oder kein Docker verwenden wollen, hier nochmal die Anleitung:

    Grundlage war die Config von arstom, danke dafür.

    Setup läuft in einer Debian 11 VM, geht aber sicher auch auf nem rapsi und mit einem anderen OS.

    0. Unifi Protect mit den gewünschten Kameras installieren und in der gewünschten Kamera die rtsps Streams aktivieren (ich hab Medium (1280x720) verwendet
    1. Debian 11 installieren und auf letzten Stand bringen
    ⚠ Es darf nichts auf dem System laufen, was den Standart-rstp-port (554) belegt⚠
    2. Notwendige Pakete installieren
    Code:
    sudo apt -y install autoconf automake build-essential cmake doxygen git graphviz imagemagick libasound2-dev libass-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libfreetype6-dev libgmp-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libopus-dev librtmp-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsnappy-dev libsoxr-dev libssh-dev libssl-dev libtool libv4l-dev libva-dev libvdpau-dev libvo-amrwbenc-dev libvorbis-dev libwebp-dev libx264-dev libx265-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb1-dev libxml2-dev lzma-dev meson nasm pkg-config python3-dev python3-pip texinfo wget yasm zlib1g-dev libdrm-dev
    3. ffmpeg aus git-repo clonen und für ffserver anpassen
    Code:
    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
    cd ffmpeg
    git checkout 2ca65fc7b74444edd51d5803a2c1e05a801a6023
    4. ffmpeg configurieren und installieren
    Code:
    ./configure --enable-gpl --enable-libx264 --enable-libx265
    make
    make install
    5. ffserver config erstellen und die Werte unterhalb der # anpassen und speichern
    Code:
    nano /etc/ffserver.conf
    Code:
    HttpPort 8090
    RtspPort 554
    # IP der VM/raspi
    HttpBindAddress 192.168.1.8
    MaxHTTPConnections 2000
    MaxClients 1000
    MaxBandwidth 100000
    CustomLog -
    
    <Feed unifi.ffm>
    File /tmp/unifi.ffm
    FileMaxSize 50M
    # IP der Unifi Protect Instanz (aus Unifi kopieren), rtsps auf rtsp anpassen und Port 7441 auf 7447
    Launch ffmpeg -i "rtsp://192.168.1.1:7447/mo6b5qtb0pgFux8v?enableSrtp"
    </Feed>
    
    <Stream s0>
    Feed unifi.ffm
    Format rtp
    
    VideoCodec mpeg4
    VideoFrameRate 24
    VideoBitRate 400
    VideoSize 640x480
    PixelFormat yuv420p
    AVOptionVideo flags +global_header
    
    NoAudio
    
    PreRoll 0
    StartSendOnKey
    </Stream>
    
    
    <Stream s0.jpg>
    Feed unifi.ffm
    Format jpeg
    
    VideoFrameRate 2
    VideoIntraOnly
    VideoSize 1280x720
    
    NoAudio
    Strict -1
    </Stream>
    
    <Stream stat.html>
    Format status
    
    #IP TKS und Computer eintrage
    ACL allow 192.168.1.x
    ACL allow 192.168.1.y
    </Stream>
    6. ffserver starten mit debug mode und auf Fehler prüfen
    Code:
    ffserver -d
    Wenn alles läuft und keine Fehler auftauchen dann gehts weiter im TKS IP Gateway:

    7. IP Kamera einbinden mit folgenden Paramtern (IP-Adresse ist die IP der VM/raspi)
    TKS-IP_Unifi.jpg

    8. Fertig :-)

    IMG_7787.png
    Zuletzt geändert von Geg0r; 29.01.2022, 19:15.

    #2
    Hallo Geg0r,

    vielen Dank für die Lösung.
    Die weitere Ergänzung mit Docker macht es für viele vermutlich nochmals einfacher. Klasse!

    Läuft bei mir der Hikvision 2032 (Ergänzung für die Sammlung), stelle jetzt aber auch auf Unifi G4 Bullet um.

    Um das Bild auch auf der Visu darstellen zu können (bei mir im Gira - HS mit QC als Kamera-Modul) habe ich einen zusätzlichen Stream ergänzt, der das Bild noch in einen JPG-Abruf über HTTP ermöglicht:

    Code:
    <Stream s0.jpg>
    Feed unifi.ffm
    Format jpeg
    VideoFrameRate 2
    VideoIntraOnly VideoSize 1280x720
    NoAudio Strict -1
    </Stream>
    Im Experte dann den Link für JPG-Pfad: http://IP:8090/eingang1.jpg

    Qualität der Bilder ist noch nicht wirklich perfekt, hier kann an den Einstellungen der JPG-Optionen ggf. noch etwas optimiert werden.
    Vielleicht hilft das auch noch jemand oder Du Geg0r übernimmst es ggf. auskommentiert in die conf mit auf.

    Viele Grüße und ein schönes Wochenende zusammen
    TimmK
    Zuletzt geändert von TimmK; 25.01.2022, 10:58.

    Kommentar


      #3
      Hi TimmK,

      danke für dein Feedback. Ich habe die config noch im Container erweitert, so dass nun auch ein Snapshot zur Verfügung steht unter http://ip:8090/s0.jpg

      Mit der Bilderqualität muss ich mir noch anschauen.

      Grüße Geg0r
      Zuletzt geändert von Geg0r; 22.01.2022, 11:08.

      Kommentar


        #4
        Hallo Geg0r

        Ich habe die Debian VM aufgebaut nach deiner Anleitung und es hat alles wunderbar funktioniert. Doch nun streikt das Bild. Folgende Fehlermeldung beim start mit ffserver -d:

        2022-01-29_17-41-13.png

        In der Conf Datei ist aber alles gemäss deiner Anleitung und es hat exakt mit dieser Conf funktioniert.

        2022-01-29_17-46-26.png

        Kannst du mir einen Tipp geben wo ich suchen kann?
        Vielen Dank
        Gruss Peter

        PS: In deiner Anleitung hat es noch ein kleiner Fehler:
        HttpBindAddress192.168.1.8
        hier muss noch ein Abstand zwischen Adress und 192 hin :-)
        Zuletzt geändert von psi; 29.01.2022, 18:26.

        Kommentar


          #5
          Hmm was ich mir vorstellen kann, ist das es noch es das file /tmp/unifi.ffm noch gibt und er deshalb den Server nicht nochmal gestartet bekommt.
          Schau mal mit top oder htop oder ps aux ob noch eine instanz vom ffserver läuft und wenn nicht dann lösche mal mit sudo rm /tmp/unifi.ffm die Datei und versuchen den Server erneut zu starten.

          Kommentar


            #6
            Ich sehe keine weitere Instanz. Hab die ffm Datei gelöscht, leider kommt dieselbe Fehlermeldung. Auch ein Reboot bringt nichts, schade den das hat super funktioniert. Ich versuche ob ich den neuen Container auf mein Synology NAS bringe.

            Kommentar


              #7
              Hallo psi,

              Zitat von psi Beitrag anzeigen
              Hallo Geg0r
              Kannst du mir einen Tipp geben wo ich suchen kann?
              Vielen Dank
              versuche mal den ffsrver mit Root-Rechten zu starten, dieses Problem hatte ich glaube auch schon das ein oder andere Mal.

              Viele Grüße
              Timm_K

              Kommentar


                #8
                Hallo Geg0r,

                ich habe nun den Server als Docker installiert. Funktioniert bisher auch super, vielen Dank:

                Zitat von Geg0r arstom Geg0r Beitrag anzeigen
                Wir haben das ganze auch als docker container für euch gebaut:
                https://github.com/weidi/stream2giratksip
                Einfach das docker-compose file ausm git-repo verwenden.
                Settings im Gira TKS IP Gateway bleiben die selben.
                Eine Frage: bin mit Docker noch nicht so wirklich vertraut, ich bekomme über zB den Portainer keine Konsole auf das Image geöffnet, um zB die Config auszulesen. Liegt das bei mir an der Config, am Portainer oder am Image. Wäre ggf. Interessant, wenn jemand mal einen 2. Stream etc. abändern wollen würde.

                Viele Grüße und weiter so :-)
                Timm

                Kommentar


                  #9
                  Du musst /bin/ash auswählen, da der Container auf alpine Linux basiert
                  You do not have permission to view this gallery.
                  This gallery has 1 photos.

                  Kommentar


                    #10
                    Zitat von Geg0r Beitrag anzeigen
                    Du musst /bin/ash auswählen, da der Container auf alpine Linux basiert
                    Vielen Dank, super.
                    Hat funktioniert. Wieder was gelernt!

                    Kommentar


                      #11
                      Hallo zusammen,

                      mit der Nutzung des Docker-Containers habe ich ein seltsames Phänomen, bei mir läuft kontinuierlich der Speicher voll.

                      Ich habe das mal mit TOP angeschaut und per Grafana visualisiert. Problem ist wohl der ffserver-Prozess mit 75% RAM-Auslastung.
                      Innerhalb von 2 Tagen ist der RAM mit 8GB voll. Neustart des Containers startet wieder von vorne. Hier die Details dazu dazu.

                      speicher-ffserver.jpg
                      speicher-ffserver_grafana.jpg

                      Workaround:
                      Ich starte per cron-job 1x täglich um 3:00 Uhr morgens den Container neu, so dass der Speicher wieder leer ist und neu beginnt voll zu laufen.
                      sudo crontab -e
                      0 3 * * * docker container restart [Container-Name aus docker ps:] gira-camera-convert_stream2giratksip_1
                      Hat jemand ein ähnliches Verhalten oder eine bessere Lösung / Idee?

                      Danke
                      TimmK


                      Zuletzt geändert von TimmK; 04.03.2022, 10:35.

                      Kommentar


                        #12
                        Hi TimmK,

                        das Phänomen kann ich tatsächlich in meinem Setup nicht nachvollziehen.
                        Wie sieht denn die logdatei vom ffserver aus? Evtl ist dein Input stream anders wie meiner und evtl macht dieser Probleme?

                        Viele Grüße

                        Geg0r

                        Kommentar


                          #13
                          Hallo Geg0r,

                          danke für die Antwort.
                          Zitat von Geg0r Beitrag anzeigen
                          Wie sieht denn die logdatei vom ffserver aus? Evtl ist dein Input stream anders wie meiner und evtl macht dieser Probleme?
                          Ich hoffe, dass ich das richtige LOG habe, das ist der Auszug aus dem Continer-LOG, der ausschließlich diese Fehler wirft:

                          Code:
                          /etc/ffserver.conf:34: Setting default value for video bit rate tolerance = 100000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:34: Setting default value for video rate control equation = tex^qComp. Use NoDefaults to disable it.
                          /etc/ffserver.conf:34: Setting default value for video max rate = 800000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:34: Setting default value for video buffer size = 800000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:44: Setting default value for video bit rate = 64000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:44: Setting default value for video bit rate tolerance = 32000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:44: Setting default value for video rate control equation = tex^qComp. Use NoDefaults to disable it.
                          /etc/ffserver.conf:44: Setting default value for video max rate = 128000. Use NoDefaults to disable it.
                          /etc/ffserver.conf:44: Setting default value for video buffer size = 128000. Use NoDefaults to disable it. Sat Mar  5 03:00:12 2022 Codecs do not match for stream 0
                          Sat Mar  5 03:00:12 2022 [ffm @ 0x7fa4a3a23520]Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
                          Sat Mar  5 03:00:12 2022 [ffm @ 0x7fa4a3a23520]Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
                          Sat Mar  5 03:00:12 2022 FFserver started.
                          Sat Mar  5 03:00:12 2022 Launch command line: /usr/bin/ffmpeg -i rtsp://192.168.XX.XX:7447/XYZXYZXYZ http://127.0.0.1:8090/unifi.ffm
                          Sat Mar  5 03:00:17 2022 127.0.0.1 - - [GET] "/unifi.ffm HTTP/1.1" 200 4175
                          
                          Sat Mar  5 04:01:24 2022 [ffm @ 0x55982f8fed00]invalid stream index 127
                          Sat Mar  5 04:01:24 2022 [ffm @ 0x55982f8fed00]invalid stream index 235
                          Sat Mar  5 04:01:24 2022 [ffm @ 0x55982f8fed00]invalid stream index 27
                          Sat Mar  5 04:01:34 2022 [ffm @ 0x55982f8fed00]invalid stream index 77
                          Sat Mar  5 04:01:34 2022 [ffm @ 0x55982f8fed00]invalid stream index 95
                          Sat Mar  5 04:01:34 2022 [ffm @ 0x55982f8fed00]invalid stream index 24
                          Sat Mar  5 04:01:34 2022 [ffm @ 0x55982f8fed00]invalid stream index 10
                          Sat Mar  5 04:01:34 2022 [ffm @ 0x55982f8fed00]invalid stream index 126
                          Sat Mar  5 04:01:41 2022 [ffm @ 0x55982f8fed00]invalid stream index 191
                          Sat Mar  5 04:02:12 2022 [ffm @ 0x55982f8fed00]invalid stream index 231
                          Um 3:00 war der Neustart, die "Invalids Streams" waren es innerhalb von 7h seit dem Neustart 4000 Einträge. Die ID ändert sich, der Rest bleibt gleich. Exemplarisch mal 10 LOG-Einträge... Vermutlich bleibt bei jedem Stream-Abbruch ein bisschen im Speicher hängen ?!?

                          Was meinst Du?
                          Danke Timm

                          Kommentar


                            #14
                            Hi zusammen,

                            ich bin jetzt seit 4 Stunden am Probieren... Leider klappt es nicht ganz. Ich habe das Docker image einmal auf meiner Synology und einmal auf einem Raspberry PI installiert und konfiguriert. Im Browser kann ich auch bei beiden Lösungen das Standbild der Kamera abrufen ("s0.jpg"). Jedoch bekomme ich nicht das Live-Bild eingebunden ins GIRA TKS. Er wirft mir zwar keine Fehlermeldung beim Testen der Verbindung. Aber das Bild bleibt schwarz. Habt ihr eine Idee woran es liegen könnte? Ich habe eine Unifi G3 and der Haustür. Danke schon mal für Eure Hilfe.

                            Viele Grüße,
                            Kai

                            Kommentar


                              #15
                              Moin Kai,
                              Komisch, Hier mal 2-3 Ansätze:
                              Funktioniert der Video-Stream Abruf per VLC?
                              Die html-Seite vom ffserver bwz log kann für das debug auch weiterhelfen....
                              Routing/netze/firewall kann ausgeschlossen werden?
                              Viel Erfolg

                              Zitat von KingKahn Beitrag anzeigen
                              Hi zusammen,
                              Jedoch bekomme ich nicht das Live-Bild eingebunden ins GIRA TKS. Er wirft mir zwar keine Fehlermeldung beim Testen der Verbindung.
                              Kai

                              Kommentar

                              Lädt...
                              X