Farbwerte eines Films abspeichern, nicht anzeigen (Einbruchsschutz)

  • Hallo zusammen!

    Fernseher-Simulatoren zum vortäuschen von Anwesenheit kann man kaufen, die Simulation ist jedoch bei allen Geräten, die ich gesehen habe, sehr unglaubwürdig.

    Ich würde deshalb gerne die Farbwerte aus einem größeren Bereich des Bildschirmes gemittelt als einen RGB Wert abspeichern, und dann auf einer LED-Lampe abspielen. Bei einer Rate von 20 Farbwechseln / sec. komme ich auf eine Datenmenge von ~ 200 kByte - gut zu bewältigen.

    Da passen auf eine SD Karte mehrere Abende TV-Berieselung.

    Könnt ihr mir sagen, ob es Ambilight Software gibt, die den Strom an Farbinformationen an die LEDs auch abspeichern kann?

    Vielen Dank für die Antwort!
    snafu

  • Farbwerte eines Films abspeichern, nicht anzeigen (Einbruchsschutz)? Schau mal ob du hier fündig wirst!

  • Ich verstehe das Problem nicht. Wenn dir simulierte Filme nicht realistisch genug sind, nimm doch echte?!? Oder "schau" DVB-T? Noch realistischer geht ja nicht...

  • Ja, das laesst sich machen. Du kannst den Film, der als .mp4 oder .mpg vorliegen sollte in einzelbilder zerlegen und dann die mittlere Farbe ermitteln. Am besten ist es, wenn du den Film in der größe skalierst, im Prinzip auf einen Pixel. das wuerde ja schon reichen.

    Das kann man mit convert machen (ein Einzeiler) (ImageMagic). Dann braeuchtest Du noch ein Script, das wie einzelbilder durchgeht und den Farbwert ausliesst. das ist ggf. etwas Handarbeit. Danach haettest Du eine Liste mit Zahlen (in ASCII als .txt oder so). Könntest Du dann damit was anfangen?

  • Danke für deine Antwort!


    Danach haettest Du eine Liste mit Zahlen (in ASCII als .txt oder so). Könntest Du dann damit was anfangen?

    Das ist exakt das, was mir weiter helfen würde.


    convert


    .. kenne ich als Tool für Fotos, werde gucken wie man damit Videos skaliert...

    Unklar ist mir aber besonders der letzte Schritt, aus dem 1 x 1 Video die Liste mit den RGB-Werten zu erstellen... Hast du da schon eine klarere Vorstellung, wie man da vorgehen müßte? Gibt es bei Video etwas ähnlich simples wie WAV bei Audio, ohne Kompression? (Ich vermute nicht, da kaum praktikabel)

    thx
    snafu
    Automatisch zusammengefügt:


    Was hast du denn für Hardware?

    Bislang nur eine RGB Lampe die ich mir gebaut habe, ~ 7 W, steuerbar via UDP.

    Als Quelle würde ich irgendwelche Filme nehmen wollen, und zum Abspielen sollte ein Controller mit SDCARD reichen oder eben ein Pi.

    Einmal editiert, zuletzt von snafu (6. Dezember 2016 um 08:39)

  • Du versuchst also die Gruppe der Einbrecher abzuschrecken, die zu klug fuer ein simulierten Fernseher käuflicher Art sind, aber zu doof, *deine* Simulation zu durchschauen? Ich bin mir nicht sicher, wie gross diese Bevölkerungsgruppe ist... aber solche Bastelprojekte dienen ja auch der Erbauung.

    Zur Sache: prinzipiell gibt es schon ein unkomprimiertes Videoformat. Das ist auch nur unpraktisch fuer vollformatige Videos. Aber ob du das nun benutzt ändert nichts an deinem Kernproblem - du musst ja auf die Rohdaten der Pixel kommen, und dazu braucht es eine geeignete Programmiersprache.

    Mein Ansatz waere über Python & OpenCV. Damit kannst du gleich einfach die Frames abgreifen, runterskalieren, und dann einen Pixelwert auslesen. http://docs.opencv.org/3.0-beta/doc/p…eo_display.html

    Dann braucht man auch nix zu transkodieren, sondern kann das immer on-the-fly machen. Könnte sogar mit DVB-T klappen. Das habe ich aber noch nie probiert, weil ich kein Fernsehen schaue.


  • ... aber solche Bastelprojekte dienen ja auch der Erbauung.

    Mein Ansatz waere über Python & OpenCV.

    Genau - Spaß am Gerät! ;)

    Ah, stimmt, da bin ich nicht drauf gekommen! Python habe ich sogar ein wenig Erfahrung, danke für den Hint!

    Zusammengefasst:
    Es scheint also nicht möglich zu sein, aus einer ambilight - Software an die Daten zu kommen... Sache. Danke für die Antworten soweit schon mal, vielleicht fällt ja do jemand noch was ganz simples ein...

  • Ich kenne Ambilight-Software nicht. Grundsätzlich macht die natürlich genau diese Reduktion eines Bildes auf eine diskrete Anzahl von Werten. Ggf. kannst du das auch zurechtkonfigurieren. Es gibt ja Ambilights die nur eine Lichtquelle ansteuern. Nur fährst du dann den Ganzen anderen Schlotz mit. Ob das nun gross einfacher wird - kA.

  • OK, so gehts:

    Code
    mkdir ttt
    cd ttt
    ffmpeg -i ../film.MP4 -r 1 output_%04d.png
    convert coutput_0000.png -scale 1 a.gif


    in dem a.gif sind nun die bytes 13 14 und 15 die RGB werte des einen Pixels (mit dem mittelwert des Frames.). Das muesste nun fuer ein Script reichen ....

  • mit dem Parameter -r 1 wird jede Sekunde ein frame rausgeschrieben. Das kann man natuerlich auf -r 20 auf 20 pro sekunde erhöhen.... Dann brauct man aber ziemlich viel Speicherplatz für einen ganzen Film. Das könnte das Hauptproblem hier werden....

    Einmal editiert, zuletzt von wend (7. Dezember 2016 um 10:34)

  • Ich hab noch ein wenig rumgespielt und festgestellt dass der Parameter -scale 1 nicht immer gut funktioniert (warum auch immer).
    Mein neuer Vorschlag ist:

    Code
    convert coutput_0000.png -colors 1 -resize 4x4 a.gif


    Hab das ganze in einem X11-Basic script mal probiert:

    Mit 5 frames pro Sekunde....

  • Manul hat er doch ursprünglich gemacht, aber das produzierte irgendwelche Fehler. Wenn ich diesen Shell-Code sehe bin ich zu gleichen Teilen bestürzt und beeindruckt. Krass, das so etwas geht. Und krass, das so etwas geht...

    Ich halte eine on-the-fly Lösung mit OpenCV trotzdem fuer geeigneter, weil man da auf die IO-Last verzichten kann. Schneller duerfte es auch sein, obwohl's darauf beim Prä-prozessing eh nicht so ankommt.

  • Beitrag #12 ist das scale-Attribut benutzt. Und später irgendwann sagt er, dass es Probleme macht.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!