Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [HowTo] Anleitung: Einbindung IP-Kamera(s)

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [HowTo] Anleitung: Einbindung IP-Kamera(s)

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gst666 last edited by

      Danke für Dein Tutorial. Vielleicht kannst Du die Überschrift noch abändern (lassen). Es geht ja nicht um die eigentliche Einbindung der IP-Kamera, sondern an eine Bewegtbilderekennung.

      Vorschlag: Bewegtbilderekennung mittels IP-Kamera auf RASPI

      1 Reply Last reply Reply Quote 0
      • ruhigundrelaxed
        ruhigundrelaxed last edited by

        Wow! Fettes kudos für diese Anleitung.

        Das ist beeindruckend umfänglich.

        Folgende Anmerkungen:

        1.) Dem Beitrags von gst666 möchte ich zustimmen. Die Überschrifft könnte schon geändert werden. Denn deine Anleitung funktioniert, wenn auch in leicht geänderter/ gekürzter variante auch mit usb cams und mmal (rpi cam). Fast alles was Bilder liefert…

        2.)Ich dachte, dass das gstreamer.service autostart Problem gelöst ist. Hatte das dann nicht weiter verfolgt. Sry. Da diese Unit bei mir läuft gehe ich nicht von einem generellen Problem aus. Kannst du mir nochmal mailen, was "systemctl status gstreamer.service" direkt nach dem booten sagt? Ausserdem schicke mal eine Liste der laufenden tasks. In etwa: ps aux > tasks.txt. Evt. müssen wir da mal bei den systemd Jungs anklopfen.

        3.)Allgemein eine bzw. mehrere Cams in motion einzubinden ist kein größeres Problem. Der config file von motion wird gesplittet. D.h. die allgemeinen Parameter bleiben in: motion.conf und die Kamera spezifischen wandern in einen jeweils pro Kamera separaten File. Die motion dokumentation klappert das ganz gut ab. Früher wurden diese einzelenen files noch in der motion.conf eingetragen, aktuell werden sie aus einem ordner gelesen. (z.B. /etc/motion/conf.d/)

        Alles kein Hexenwerk. ABER: Ob der rpi das kann ist fraglich. Keine Ahnung ob der h264 block der gpu paralleles decoding kann. Falls ja, muss sinngemäß ein weiteres loopbackdevice erzeugt werden. (man kann dem loopback modul beim laden mitgeben, wieviele devices es erzeugen soll) und eine weitere gstreamer pipeline aufgesetzt werden.

        4.)

        Man kann natürlich drei mal eine Schublade aufmachen und jeweils ein Paket reinlegen:
        > apt-get install -y gstreamer1.0-tools && apt-get install -y gstreamer1.0-plugins && apt-get install -y gstreamer1.0-omx
        oder

        man macht einmal die Schublade auf und legt 3 Pakete rein.

        apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins gstreamer1.0-omx
        

        Sollte schneller sein und ist einfacher zu lesen.

        Oder machst du das absichtlich so.

        Ansonsten richtig coole Anleitung. Danke dafür…

        Ein paar Worte zum Adapter:

        Veröffentlichen via npm:

        Wenn sich, sagen wir mal, 2 weitere Benutzer gefunden haben. Und wenn auch deren Installation stabil läuft. Dann würde ich mich mal trauen diesen Adapter irgendwie zu veröffentlichen.

        Pläne / Brainstorming:

        Ich denke darüber nach, folgende Schritte zu automatisieren:

        1.) > events.sh anlegen (Pfadangabe an System anpassen)
        2.) Die Adapterspezifischen motion Konfigurationen. (Also z.B. die "on" events) automatisch vom Adapter durchführen zu lassen.

        (Das was du als: Konfiguration für den ioBroker-motion-Adapter. bezeichnet hast.)

        3.) Feel free to add your wishes.

        Saluti da colonia

        1 Reply Last reply Reply Quote 0
        • fu_zhou
          fu_zhou last edited by

          > apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins gstreamer1.0-omx
          habe ich übernommen

          > 1.) Dem Beitrags von gst666 möchte ich zustimmen. Die Überschrifft könnte schon geändert werden. Denn deine Anleitung funktioniert, wenn auch in leicht geänderter/ gekürzter variante auch mit usb cams und mmal (rpi cam). Fast alles was Bilder liefert…
          habe mich hierzu an den Admin gewandt

          1 Reply Last reply Reply Quote 0
          • ruhigundrelaxed
            ruhigundrelaxed last edited by

            Cool.

            Hier noch mal ein paar infos für mutige die das mal mit 2 Cams ausprobieren wollen:

            modprobe v4l2loopback devices=2
            
            /usr/bin/gst-launch-1.0 rtspsrc location=rtsp://**IPCAM1**/Streaming/Channels/101 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! tee ! v4l2sink device=/dev/video0
            
            /usr/bin/gst-launch-1.0 rtspsrc location=rtsp://**IPCAM2**/Streaming/Channels/101 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! tee ! v4l2sink device=/dev/video1
            

            Die o.g. Zeilen richten nur das GPU decoding ein. Zum testen….

            Meine Vermutung ist: omxh264dec funktioniert nur mit einem stream....

            Komplett ungetestet. Wenn sich jemand getraut hat, bitte berichten.

            1 Reply Last reply Reply Quote 0
            • lobomau
              lobomau last edited by

              Ich habe mich rangesetzt und versuche es zu installieren. Bei mir ist Hauptsystem ein brix und raspicam läuft auf raspi3.

              Habe also mit der Installation auf dem brix begonnen:

              Hier nach
              > autoreconf -fiv
              kam am Ende:

              configure: error: Required package 'pkg-config' not found, please check motion_guide.html and install necessary dependencies.
              

              Darauf hin habe ich:````
              apt-get install pkg-config

              gemacht.
              
              Dann geht nicht direkt "make"… sondern wieder:````
              autoreconf -fiv
              
              ./configure
              
              make
              

              "Install complete!"

              Scheint also der erste Abschnitt geklappt zu haben…

              1 Reply Last reply Reply Quote 0
              • lobomau
                lobomau last edited by

                @fu_zhou:

                3. Konfiguration für den ioBroker-motion-Adapter. Auch hier sind die Pfadangaben entsprechend an das System anzupassen.

                # 
                ...
                ```` `  Hier ist der iobroker-motion Adapter gemeint? Dort gebe ich den Code ein wie in der Konsole? Vielleicht verstehe ich es sobald ich den Adapter installiert habe…
                

                ` > Jetzt gstreamer installieren. gstreamer selbst ist wohl bei Jessie dabei, daher nur noch die notwendigen Pakete holen:

                sudo bash
                
                apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins gstreamer1.0-omx
                ```` `  
                

                Das Paket findet er scheinbar nicht. Habe auch````
                apt-get update

                root@brix-3150:/motion# sudo bash
                root@brix-3150:/motion# apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins gstreamer1.0-omx
                Paketlisten werden gelesen... Fertig
                Abhängigkeitsbaum wird aufgebaut.
                Statusinformationen werden eingelesen.... Fertig
                Hinweis: »gstreamer1.0-plugins-ugly-amr« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-ugly-dbg« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-ugly-doc« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-base-apps« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-good« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-bad« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-base« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-bad-videoparsers« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-really-bad« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-bad-dbg« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-bad-doc« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-bad-faad« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-base-dbg« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-good-dbg« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-base-doc« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-good-doc« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                Hinweis: »gstreamer1.0-plugins-ugly« wird für regulären Ausdruck »gstreamer1.0-plugins« gewählt.
                E: Paket gstreamer1.0-omx kann nicht gefunden werden.
                E: Mittels des Musters »gstreamer1.0-omx« konnte kein Paket gefunden werden.
                E: Mittels regulärem Ausdruck »gstreamer1.0-omx« konnte kein Paket gefunden werden.
                root@brix-3150:/motion#

                1 Reply Last reply Reply Quote 0
                • ruhigundrelaxed
                  ruhigundrelaxed last edited by

                  Hi lobomau,

                  also, dass du das omx paket nicht findest liegt wahrscheinlich daran, dass du das nicht auf einem rpi sondern auf deinem brix installierst.

                  Nur beim RPI kann ich mit sicherheit sagen das omx das decoding auf der gpu macht.

                  Du hast allerdings eine intel hd gpu in deiner brix kiste. Die kann imho auch h264 decodieren. Allerdings nicht mit omx sondern mit vaapi.

                  Im einfachste Fall könnte es reichen, in der pipline omxh264dec durch vaapidecode zu tauschen. Müsstest du ausprobieren. Evt. ist noch mehr tuning an der pipeline nötig.

                  Leider habe ich grade keinen Rechner mit Intel GPU zum probieren.

                  Sinngemäß mußt du das folgende tun:

                  1.) Erstmal die vaapi installieren und schauen ob sie läuft. ->apt-cache search vaapi<- zeigt dir die verfügbaren vaapi pakete. Auch das gstreamer vaapi plugin sollte auftauchen. das paket vainfo installieren, und das program vainfo ausführen. Es sollte dir dann erzählen ob deine vaapi läuft.

                  2.) Nun mal probieren ob die gstreamer pipeline mit vaapidecode anstelle von omxh264dec läuft.

                  Dann melden und wir sehen weiter….

                  Viel Glück & Gruß

                  Martin

                  1 Reply Last reply Reply Quote 0
                  • lobomau
                    lobomau last edited by

                    Hab Mal nach Paketen gesucht und gefunden:

                    gstreamer1.0-vaapi - VA-API plugins for GStreamer
                    gstreamer1.0-vaapi-doc - GStreamer VA-API documentation and manualsi965-va-driver - VAAPI driver for Intel G45 & HD Graphics family
                    libvdpau-va-gl1 - VDPAU driver with OpenGL/VAAPI backend
                    

                    Dann teste ich mal die Installation…

                    1 Reply Last reply Reply Quote 0
                    • fu_zhou
                      fu_zhou last edited by

                      @lobomau:

                      @fu_zhou:

                      3. Konfiguration für den ioBroker-motion-Adapter. Auch hier sind die Pfadangaben entsprechend an das System anzupassen.

                      # 
                      ...
                      ```` `  Hier ist der iobroker-motion Adapter gemeint? Dort gebe ich den Code ein wie in der Konsole? Vielleicht verstehe ich es sobald ich den Adapter installiert habe… `  
                      

                      Nein, hier ist tatsächlich noch die motion.conf gemeint, um motion für den motion-Adapter vorzubereiten.

                      1 Reply Last reply Reply Quote 0
                      • lobomau
                        lobomau last edited by

                        @lobomau:

                        Hab Mal nach Paketen gesucht und gefunden:

                        gstreamer1.0-vaapi - VA-API plugins for GStreamer
                        gstreamer1.0-vaapi-doc - GStreamer VA-API documentation and manualsi965-va-driver - VAAPI driver for Intel G45 & HD Graphics family
                        libvdpau-va-gl1 - VDPAU driver with OpenGL/VAAPI backend
                        

                        Dann teste ich mal die Installation… `
                        Installation war kein Problem.

                        Ich hänge jedoch fest die richtige Adresse für rtsp herauszubekommen. Steht ja viel zu im Netz.

                        Habe erstmal folgendes probiert mit der IP vom raspi3 mit raspi-cam:

                        raspivid -o - -t 0 -w 1280 -h 720 -fps 25 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
                        

                        und mit VLC die Adresse probiert:

                        rtsp://192.168.0.205:8554/h264
                        

                        Aber da kommt bei VLC immer ein Fehler.

                        1 Reply Last reply Reply Quote 0
                        • fu_zhou
                          fu_zhou last edited by

                          Auf jeden Fall warst du mit dem VLC mal richtig unterwegs. Vielleicht hilft dir das:

                          https://www.ispyconnect.com/man.aspx?n=Raspberry+Pi

                          Ich habe iSpy auf einem Windows-PC installiert und unter Angabe des Models nach dem Stream suchen lassen. Das hat ganz gut funktioniert. Ob's mir der RasPi Cam geht, weiß ich nicht, aber dass sie aufgeführt ist, lässt schon mal hoffen…

                          Hast mal nur rtsp://###.###.###.###:8554/ probiert?

                          1 Reply Last reply Reply Quote 0
                          • lobomau
                            lobomau last edited by

                            @fu_zhou:

                            Hast mal nur rtsp://###.###.###.###:8554/ probiert? `
                            Das geht auch nicht. ABer wahrscheinlich läuft motion gar nicht, so dass VLC auch nichts anzeigen kann.

                            Nach````
                            raspivid -o - -t 0 -w 1280 -h 720 -fps 5 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264

                            
                            In der Konsole sieht es am Ende dann so aus:
                            

                            [73d00508] core input debug: Buffering 74%
                            [73d00508] core input debug: Buffering 79%
                            [73d00508] core input debug: Buffering 84%
                            [73d00508] core input debug: Buffering 89%
                            [73d00508] core input debug: Buffering 94%
                            [73d00508] core input debug: Buffering 99%
                            [73d00508] core input debug: Stream buffering done (840 ms in 1 ms)
                            [73d00508] core input debug: Decoder wait done in 0 ms
                            [73d00508] core input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 806 ms)
                            [73d00508] core input error: ES_OUT_RESET_PCR called
                            [73d00508] core input debug: Buffering 0%
                            [73d00508] core input debug: Buffering 4%
                            [73d00508] core input debug: Buffering 9%
                            [73d00508] core input debug: Buffering 14%
                            [73d00508] core input debug: Buffering 19%
                            [73d00508] core input debug: Buffering 24%
                            [73d00508] core input debug: Buffering 29%
                            [73d00508] core input debug: Buffering 34%
                            [73d00508] core input debug: Buffering 39%
                            [73d00508] core input debug: Buffering 44%
                            [73d00508] core input debug: Buffering 49%
                            [73d00508] core input debug: Buffering 54%
                            [73d00508] core input debug: Buffering 59%
                            [73d00508] core input debug: Buffering 64%
                            [73d00508] core input debug: Buffering 69%
                            [73d00508] core input debug: Buffering 74%
                            [73d00508] core input debug: Buffering 79%
                            [73d00508] core input debug: Buffering 84%
                            [73d00508] core input debug: Buffering 89%
                            [73d00508] core input debug: Buffering 94%
                            [73d00508] core input debug: Buffering 99%
                            [73d00508] core input debug: Stream buffering done (840 ms in 1 ms)
                            [73d00508] core input debug: Decoder wait done in 0 ms

                            1 Reply Last reply Reply Quote 0
                            • arteck
                              arteck Developer Most Active last edited by

                              na dann schau ich mal

                              ok…hab da noch was...

                              man sollte für die GPU mem allokieren

                              gpu_mem=128

                              1 Reply Last reply Reply Quote 0
                              • lobomau
                                lobomau last edited by

                                @arteck:

                                na dann schau ich mal

                                ok…hab da noch was...

                                man sollte für die GPU mem allokieren

                                gpu_mem=128 `
                                das ist das was man unter raspi-config einstellt? Da hatte ich bereits 128 eingestellt.

                                1 Reply Last reply Reply Quote 0
                                • arteck
                                  arteck Developer Most Active last edited by

                                  ok bevor ich jetzt suche…

                                  wie fummel ich 2 Kameras da rein ??

                                  1 Reply Last reply Reply Quote 0
                                  • lobomau
                                    lobomau last edited by

                                    @arteck:

                                    ok bevor ich jetzt suche…

                                    wie fummel ich 2 Kameras da rein ?? `
                                    Vielleicht hilft das hier weiter:

                                     If you only have one camera you only need the motion.conf file but if you have more than one camera, then you will need to have one camera config file per camera plus the motion.conf file.
                                    
                                    So if you have for example two cameras you need motion.conf and two camera config files. So a total of three config files.
                                    
                                    An option that is common to all cameras can be placed in motion.conf. (You can also put all parameters in the camera files but that makes a lot of editing when you change a common thing).
                                    
                                    An option that is unique to a camera must be defined in each camera file.
                                    
                                    It is often seen that people copy the entire motion.conf into the camera config files and change a few options. This works but it not recommended because it is more difficult to maintain and overview. Keep all the common options in motion.conf and the few unique only in the camera config files
                                    
                                    The first camera is defined in the first camera file called from motion.conf. The 2nd camera is defined in the 2nd camera file called from motion.conf etc.
                                    
                                    Any option defined in motion.conf will be used for all cameras except for the cameras in which the same option is defined in a camera config file.
                                    
                                    To make it clear, the camera files format and syntax is the same as motion.conf. An example of what you might want in a camera file as follows: assume you have two cameras, attached to one system. Create files camera0.conf and camera1.conf. At the end of motion.conf, uncomment out the lines that refer to them. The full contents of the camera files can be as simple as
                                    
                                    camera0.conf:
                                    videodevice /dev/video0
                                    stream_port 8081
                                    
                                    camera1.conf:
                                    videodevice /dev/video1
                                    stream_port 8082
                                    

                                    Quelle: http://htmlpreview.github.io/?https://g … guide.html

                                    1 Reply Last reply Reply Quote 0
                                    • arteck
                                      arteck Developer Most Active last edited by

                                      soweit hab ich schon

                                      aber

                                      ich verstehe es auch so das ich 2 gstreamer.service instanzen laufen haben muss

                                      richtig ??

                                      1 Reply Last reply Reply Quote 0
                                      • lobomau
                                        lobomau last edited by

                                        Kann ich das Ganze auch mit einem stream über http anstatt rtsp machen?

                                        Das habe ich jetzt hinbekommen, dass ich einen stream bekomme über http://IP:port

                                        Ich bin hier nach vorgegangen:

                                        https://www.pcwelt.de/ratgeber/Mit_dem_ … 38548.html

                                        1 Reply Last reply Reply Quote 0
                                        • fu_zhou
                                          fu_zhou last edited by

                                          Achtung: bei mir funktioniert v4l2loopback nicht mehr, seitdem ich auf Jessie 4.9 upgegradet habe. Damit wird /dev/video0 nicht mehr erzeugt und gstreamer liefer kein Bild mehr an motion. Ich bin noch auf der Suche, im Moment bin ich auf rtsp mit ffmpeg umgestiegen, was aber eine höhere CPU Last zur Folge hat. Das Installieren der Kernel-Headers ging unter 4.9 wesentlich schneller, als bei der vorherigen Version. Ob es daran liegt?

                                          Es wäre Klasse, wenn jemand helfen kann, den v4l2loopback unter Jessie 4.9 wieder ans laufen zu kriegen…

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            Mike last edited by

                                            Hi!

                                            Ich habe ein kleines Problem mit dem Motion-Adapter.

                                            Ich habe Motion installiert (mittels apt-get), und ich denke, es funktioniert auch soweit.

                                            Mein Problem ist jedoch, dass im Adapter keine Reaktion auf die Aktionen von Motion zu sehen sind.

                                            Bei korrekter Installation sollte ja zB "lastpicture" den Dateinamen des letzten Bildes enthalten.

                                            Tut es aber nicht, und ich bekomme es auch nicht hin.

                                            in der motion.conf habe ich auf das Events.sh script verwiesen, und es wird auch ausgeführt.

                                            Zusätzlich habe ich fürs debuggen die folgende Zeile eingefügt:

                                            echo $json_answer >> $log_file
                                            

                                            Darin wird, wenn ich zB einen Snapshot erstelle, folgende Zeile geloggt:

                                            {"event": "on_picture_save", "thread": 1, "timestamp": "1500020347", "noiselevel": 15, "filename": "/home/motion/01-20170714101907-snapshot.jpg"}
                                            

                                            wenn ich jetzt aber mit netcat diesen Text übermittle

                                            echo {"event": "on_picture_save", "thread": 1, "timestamp": "1500020347", "noiselevel": 15, "filename": "/home/motion/01-20170714101907-snapshot.jpg"} |netcat 127.0.0.1 8093
                                            

                                            dann wird die Instanz motion.0 für kurze Zeit rot (~45sek), und die Werte werden auch nicht übernommen.

                                            den Motion HTTP-Server Port habe ich auf 8091 gesetzt, den Motion Event Port auf 8093 (ebenso in der Events.sh)

                                            außerdem belegter POrt :

                                            <code>[/# The mini-http server listens to this port for requests (default: 0 = disabled)
                                            stream_port 8092
                                            code]
                                            
                                            Die Steuerung über die Objecte in Motion.0.thread0.control funktioniert ... zumindest kann ich einen Snapshot erstellen...
                                            Kann mir da jemand sagen, was ich falsch mache?
                                            
                                            LG Mike
                                            
                                            Edith sagt:
                                            Habe gesehen dass im Netcat Befehl Thread 1 steht, unter den Objekten aber Thread0.
                                            Beim Netcat Befehl den Thread auf 0 zu setzen, bringt aber keine Änderung :(</code>
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            506
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            26
                                            22783
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo