Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. FFMPEG im Container über Java-Skript nutzen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    FFMPEG im Container über Java-Skript nutzen

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

      Moin zusammen,

      momentan läuft der Iobroker bei mir als Container auf einem QNAP NAS. (Buanet)
      Kürzlich habe ich am Hauseingang eine INSTAR POE Kamera installiert und endlich auch einen guten Weg gefunden, das Drücken der Klingel an der Haustür in eine Objektänderung zu bekommen.

      Nun wollte ich mich daran machen, mir Bilder der Kam beim Klingeln per Telegram schicken zu lassen. (Bisher habe ich keine VIS, ich steuere alles gut über Telegram und Lovelace NS Panels)

      Ich fand also den Thread über die Nutzung von FFMPEG zur Erstellung eines kurzen mp4 File, welches über Telegram verschickt als GIF angezeigt werden kann.


      @alex1808 said in [Frage BLOCKLY ] Klingel Bild per Telegram versenden / Snapshot von Cam per Telegram versenden:

      Ich versende stamt Bild eine kleine mp4 Datei die als Gif bei Telegram ankommt.

      einfach ffmpeg installieren und Befehl mit Blockly schicken.

      513_screenshot_at_juli_04_11-29-16.png

      Befehl URL:

      ffmpeg -y -i rtsp://kamera_ip:554/12 -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=w=640:h=360:force_original_aspect_ratio=decrease -r 15 /opt/iobroker/out2.mp4
      

      (Muss zu eigene Kameras angepasst werden)


      @alex1808 said in [Frage BLOCKLY ] Klingel Bild per Telegram versenden / Snapshot von Cam per Telegram versenden:

      Ich versende stamt Bild eine kleine mp4 Datei die als Gif bei Telegram ankommt.

      einfach ffmpeg installieren und Befehl mit Blockly schicken.

      513_screenshot_at_juli_04_11-29-16.png

      Befehl URL:

      ffmpeg -y -i rtsp://kamera_ip:554/12 -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=w=640:h=360:force_original_aspect_ratio=decrease -r 15 /opt/iobroker/out2.mp4
      

      (Muss zu eigene Kameras angepasst werden)

      Hat man nun ein Linuxsystem auf einem Raspi o.ä. laufen, stelle ich mir das easy vor.
      Ich habe FFMPG als Container auf dem NAS laufen, verstehe nun aber nicht, wie ich per Blockly Skript FFMPEG quasi starten kann. Wahrscheinlich habe ich einfach zu wenig Grundverständnis über die Arbeitsweise von Containern, aber leider ist das NAS aktuell meine einzige Möglichkeit.
      Ich weiß auch nicht, welchen Speicherort ich für die mp4 Dateien ich wählen kann / darf.

      Kann mir jemand helfen, damit zum Ziel zu kommen? FFMPG gibt es ja leider nicht als Adapter für den Iobroker.

      Beste Grüße

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Bhenyamin last edited by

        @bhenyamin

        Das einfachste für dich wäre, ffmpeg im iobroker Image zusätzlich zu installieren
        Dafür ist die environment variable PACKAGES
        Vorgesehen. Dort kannst du angeben welche weiteren Pakete installiert werden sollen

        Wenn dann das Programm da ist kannst du es von iobroker aus auch ansprechen.
        Wo welche Dateien zu liegen haben oder gespeichert werden soll kann ich nicht sagen. Das hat mit den Datei Berechtigungen zu tun.
        Da wirst du austüfteln müssen.
        Die Ausgabedatei könnte evtl im /temp Ordner erzeugt werden, da es ja nach versandt nicht mehr benötigt wird

        B 1 Reply Last reply Reply Quote 0
        • B
          Bhenyamin @OliverIO last edited by

          @oliverio

          Super, danke, das öffnet mir die Augen. Jetzt muss ich nur noch raus finden wie ich das FFMPEG Paket da rein bekomme, aber da komme ich hinter. Merci!

          OliverIO Codierknecht 2 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @Bhenyamin last edited by

            @bhenyamin

            die environment variable ist bei buanet dokumentiert

            B 1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @Bhenyamin last edited by

              @bhenyamin
              QNAP ist hier wohl etwas exotisch.
              Bei Synology gibst Du das/die benötigte(n) Paket(e) einfach in den Umgebungsvariablen des Containers an.

              24a242f0-2c50-40eb-9be0-d5e534d1e900-grafik.png

              Geladen wird das dann beim Start des Containers automatisch.

              1 Reply Last reply Reply Quote 0
              • B
                Bhenyamin @OliverIO last edited by

                @oliverio
                Da hatte ich es auch schon mal nach gelesen. Versuche ich gleich mal. Meinte eher, ob ich einfach ffmpeg bei den Paketen rein schreiben kann. (Wirkt auf mich immer etwas zu einfach 🙂

                @codierknecht said in FFMPEG im Container über Java-Skript nutzen:

                @bhenyamin
                QNAP ist hier wohl etwas exotisch.
                Bei Synology gibst Du das/die benötigte(n) Paket(e) einfach in den Umgebungsvariablen des Containers an.

                24a242f0-2c50-40eb-9be0-d5e534d1e900-grafik.png

                Geladen wird das dann beim Start des Containers automatisch.

                Ich habs noch nicht getestet. Muss gerade erstmal das QNAP updaten. Ich geben mal bescheid, obs klappt. Danke!

                B 1 Reply Last reply Reply Quote 0
                • B
                  Bhenyamin @Bhenyamin last edited by Bhenyamin

                  ich habs im terminal des Iobroker Containers einfach mal über den apt befehl angefangen zu installieren.... Ich warte gespannt 😕

                  Edit: Geil, hat funktioniert. Da hätte man auch drauf kommen können. In der Console kann ich ffmpeg jetzt nutzen. Dann versuche ich mal, es über das Skript zu nutzen! Merci alle.

                  OliverIO 2 Replies Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Bhenyamin last edited by OliverIO

                    @bhenyamin

                    nein, falsch,
                    alles was du in einem docker image auf der kommandozeile machst ist im container nicht dauerhaft (sofern es nicht eine der volumes betrifft)
                    da bei buanet die "bin" pfade (keine ahnung wo bspw ffmpg sich hininstalliert) nicht in einem volume befindet, dann ist es bei der nächsten regeneration wieder weg

                    einfach den packetnamen in das environment feld schreiben
                    auf der synology gibt es da dann genau auch diese eingabemöglichkeit
                    a020c88b-6ade-4b9f-8f4c-21dd985e6900-image.png

                    da buanet auf debian basiert, können dann auch alle packetnamen eingetragen werden die sonst auch mit apt install eingegeben werden können
                    https://packages.debian.org/bookworm/ffmpeg

                    für qnap habe ich direkt nur einen screenshot gefunden bei dem links environment mit dabei steht
                    332e06b2-56a4-4e6c-a6cc-914226604d5e-image.png

                    1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Bhenyamin last edited by

                      @bhenyamin sagte in FFMPEG im Container über Java-Skript nutzen:

                      Edit: Geil, hat funktioniert. Da hätte man auch drauf kommen können. In der Console kann ich ffmpeg jetzt nutzen. Dann versuche ich mal, es über das Skript zu nutzen! Merci alle.

                      wenn du das mit dem packages hinbekommen hast,
                      denke daran, das skripte und blocklys von iobroker aus als user "iobroker" ausgeführt wird

                      am besten zum testen auf der kommandozeile in container

                      sudo -u iobroker bash
                      

                      eingeben. dann wird eine neue bash für den user iobroker gestartet. alles was du dort machst ist so wie wenn es nachher das skript ausführt
                      (nur um probleme mit den benutzerrechten vorzubeugen)
                      aus der kommst du mit exit wieder zum normalen user zurück (oder einfach die konsole komplett schließen)

                      B 1 Reply Last reply Reply Quote 0
                      • B
                        Bhenyamin @OliverIO last edited by Bhenyamin

                        @oliverio

                        Moin, ich muss hier nochmal ran.
                        Hatte die FFMPEG Geschichte jetzt schön laufend. Snapshots und Videos habe ich via Blockly Skript ich auf trigger hin (z.B. klingeln oder per Telegram Kommando) im tmp/ Verzeichnis gespeichert und anschließend direkt per Telegram.

                        "ffmpeg -i http://xxx:xxx@192.x.x.x/tmpfs/snap.jpg -vf scale=480:300 -q:v 2 -y /tmp/doorsnap.jpg"

                        Ging super sauber bis zum JS Upgrade von 4 auf 5 vor ein paar Tagen. Seither bleibt das tmp Verzeichnis leer, nachdem der ffmpeg Befehl gelaufen ist. Scheint evtl. Ein Zugriffsrechte Problem zu sein oder so... weiss nur nicht, wie ich das löse.

                        Hat sich da durch das Upgrade bekannterweise was geändert?

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

                          @bhenyamin

                          hast du mal probiert in der console des containers den folgenden befehl einzugeben und dann deinen ffmpeg befehl?
                          dann siehst du evtl genauer, was da für fehlermeldungen auftauchen.

                          sudo -u iobroker bash
                          
                          B 1 Reply Last reply Reply Quote 0
                          • B
                            Bhenyamin @OliverIO last edited by

                            @oliverio said in FFMPEG im Container über Java-Skript nutzen:

                            @bhenyamin

                            hast du mal probiert in der console des containers den folgenden befehl einzugeben und dann deinen ffmpeg befehl?
                            dann siehst du evtl genauer, was da für fehlermeldungen auftauchen.

                            sudo -u iobroker bash
                            

                            Oh mann, ich idiot. Ich glaube ich habe ffmpeg beim recreate des Containers im Zuge des Upgrades gar nicht mit installiert. Danke für den Tip. "ffmpeg command not found" hat mir die Augen geöffnet! Vielen Dank für den Klaps auf den Hinterkopf 🙂

                            Grüße

                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @Bhenyamin last edited by OliverIO

                              @bhenyamin

                              was heißt installiert?
                              du trägst das paket ja in die environment Packages des containers rein
                              https://github.com/buanet/ioBroker.docker/blob/main/docs/README_docker_hub_iobroker.md#configure-environment

                              so ist es dann auch beim nächsten re-create consistent wieder da.
                              nix mit apt install und so im container auf der komandozeile ausführen.

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                Bhenyamin @OliverIO last edited by

                                @oliverio
                                Genau, und das hattest Du mir bei meiner ursprünglichen Anfrage auch geraten, wie ich jetzt las. Das habe ich aber damals gar nicht gesehen und halt über apt installiert und so ist es gekommen, wie du vorher gesagt hast.
                                Beim recreate des containers war es jetzt weg.

                                Ich trage das Paket "ffmpeg" als environment variable ein, okay... und als value? Den Pfad?

                                OliverIO 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @Bhenyamin last edited by OliverIO

                                  @bhenyamin

                                  ach würde es nur eine dokumentation geben wo das genau drin steht 😉
                                  https://github.com/buanet/ioBroker.docker/blob/main/docs/README_docker_hub_iobroker.md#configure-environment

                                  PACKAGES (optional) Install additional Linux packages to your container, packages should be separated by whitespace like this: package1 package2 package3.
                                  
                                  

                                  alles was in packages drin steht wird dann durch ein skript im container automatisch bei der regeneration für dich installiert. als da kommt genau der name rein mit dem du das installierst, also ffmpeg

                                  B 1 Reply Last reply Reply Quote 1
                                  • B
                                    Bhenyamin @OliverIO last edited by

                                    @oliverio

                                    Das habe ich schon verstanden. Ich frage mich nur, was ich als Value eintrage.

                                    Danke für deinen Support.

                                    Screenshot_20231202_230656_Chrome.jpg

                                    OliverIO 1 Reply Last reply Reply Quote 0
                                    • Marc Berg
                                      Marc Berg Most Active last edited by

                                      @bhenyamin sagte in FFMPEG im Container über Java-Skript nutzen:

                                      Das habe ich schon verstanden.

                                      Ne, scheinbar nicht. 🙂

                                      1bbc7aef-f704-4ae0-bfaf-8410ecee9aa6-grafik.png

                                      B 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Bhenyamin last edited by OliverIO

                                        @bhenyamin

                                        Bei packages trägst du den Paketnamen ein. Wenn mehrere dann mit Leerzeichen getrennt

                                        Aber eigentlich habe ich das ja schon so geschrieben. Auch exakt den Wert den du eintragen musst.
                                        Ansonsten musst du genauer schreiben wo das Problem ist
                                        Du weißt was ein package ist?

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          Bhenyamin @Marc Berg last edited by

                                          @marc-berg

                                          Aaaaahhh! Jetzt ja.

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            Bhenyamin @OliverIO last edited by Bhenyamin

                                            @oliverio

                                            Du weißt was ein package ist?

                                            Offenbar nicht über die reine Ableitung aus der Übersetzung hinaus.
                                            Ich dachte einfach ein Paket, was im Iobroker-Container mit installiert wird, wenn man es in den Environment Variablen einträgt.

                                            Auch exakt den Wert den du eintragen musst.

                                            Das habe ich irgendwie nicht en Detail gesehen.

                                            OliverIO 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            917
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            22
                                            1195
                                            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