TV-Bild-Manipulation mit Plugin möglich ?

  • gutemine

    Hi,


    ist es möglich, mit einem Plugin das TV-Bild zu "manipulieren" ?


    Es geht um das HyperionControl-Plugin, wo es eine Option "Schwarzranderkennung" für die LED-Stripes gibt.

    Um die Einstellungen diesbezüglich zu testen, benötigt man ein live-TV-Bild mit horizontalen oder vertikalen schwarzen Balken.

    Ein "Zeichnen" von schwarzen Balken über den Screen hilft da leider nicht, weil Hyperion da nur das echte TV-Bild (ohne OSD) auswertet.


    Könnte man daher irgendwie schwarze Balken ins TV-Bild zaubern, um dem User ein angepasstes live Test-Bild mit Balken zum Testen zur Verfügung zu stellen, ohne dass er einen Sender mit echten Balken suchen muss ?


    Hast du da eine Idee ? ;)

  • Mit "du" warst schon du gemeint - hatte dich ja in der ersten Zeile mit gutemine angeschrieben ;)


    Hmm, wüsste im Moment gar nicht, wie ich das machen müsste mit dem 4:3 auf 16:9 ausgeben ?

    (in den AV-Settings ändert sich bei 16:9-Sendungen bei diversen Optionen nichts)


    Besser wäre auch, wenn man das Umschalten könnte mit Balken oben/unten oder rechts/links bzw. die Balkenbreite anpassen ;)


    Oder kann man einen Screenshot (jpg) als "Video" per PlayService abspielen und so ein Live-TV mit Balken vorgaukeln ?

  • Du musst nur ein mpeg draus machen, simples bootlogo reicht da gemäß Anleitung mit tpmg am PC oder eben fmpeg auf der Box auf 4:3 umrechnen, das macht dir die Balken rein


    Wenn du es lieber hackst, schau dir an wie das grab.c aus dem videobuffer das live TV liest, das kannst Du auch zum Schreiben verbiegen wenn du die ioctl rausfindest zum Bild anhalten und reinschreiben.

    Bad mood, bad manners, bad Plugins, you have been warned :whistling:

  • ... schau dir an wie das grab.c aus dem videobuffer das live TV liest, das kannst Du auch zum Schreiben verbiegen wenn du die ioctl rausfindest zum Bild anhalten und reinschreiben....

    Und im showiframe.c siehst du wie du ein mpeg reinschreibst.

    Bad mood, bad manners, bad Plugins, you have been warned :whistling:

  • Für ioctl gibt es auch ein Python Interface aber auf dem Low Level wo du direkt in den Videochip schreibst ist es in C (für mich) wesentlich einfacher.


    Insofern wird ein jpeg mit Balken als mpeg codiert und mit showiframe angezeigt wohl das Maximum sein was für dich noch einfach machbar wäre.

    Bad mood, bad manners, bad Plugins, you have been warned :whistling:

  • Danke für deine Bemühungen, mir einen Ansatz zu liefern :thumbup:


    Hab jetzt mal ganz einfach zum Test folgendes gemacht ;)

    Code
    1. self.srefOld = self.session.nav.getCurrentlyPlayingServiceReference()
    2. self.session.nav.stopService()
    3. cmd = "showiframe /usr/share/dreambox-bootlogo/backdrop.mvi"
    4. self.container.execute(cmd)
    5. ...
    6. #on close-screen
    7. self.session.nav.playService(self.srefOld)

    Das geht zumindest auf der 920 (TV-Bild wird gestoppt, das Bootlogo angezeigt und beim Beenden des Screens das TV-Bild wieder gestartet)

    Da könnte man dann ja vordefinierte .mvi (Farbflächen mit schwarzen Balken) mitgeben und auf den Bildschirm zaubern, die dann das tatsächliche Verhalten der LEDs bei TV-Bildern mit schwarzen Balken aufzeigen ;)


    Gab es auf der One nicht ein Problem, dass showiframe nicht geht, solange e2 läuft ? (Botvideo-Plugin)

    Das Ganze müsste vorerst eben gerade auf der One laufen. ;)

  • Hab ja keine One zum Testen ;)

    Und der Tester hat im Moment wohl keine Zeit.


    Mit PlayService hab ich es gerade nicht hinbekommen, so ein jpg-video abzuspielen :/

    Erstellt habe ich das "Video" mit:

    ffmpeg -i hBlackborder.jpg -r 25 -b 20000 -s hd1080 movie.mpg

    (das als .mvi umbenannt, funktioniert mit showiframe hier auf der 920 wunderbar)


    Aber als .mpg mit PlayService geht es nicht, da kommt nur schwarzes Bild:

    Code
    1. playref = eServiceReference(video_pathfilename)
    2. self.session.nav.playService(playref)

    übergebe ich den Pfad zu einem *.ts-file im Movie-Ordner wird es abgespielt.


    Naja, dann muss ich wohl auf den Tester warten ;)

  • Damit hatte ich auch schon probiert, wobei ich nicht alles mit 1 hatte.
    Beim ts-file geht es ja auch, wenn man nur den filenamen nimmt.


    Denke eher, weil das Video nur 0,4 sek lang ist, es gar nicht erst sichtbar wird ;)


    Das mit showiframe geht auf der One.
    Na mal schauen ;)

  • Das hatte mir einfach keine Ruhe gelassen, weil die Videos ja über die DP-Filmliste problemlos abgespielt werden konnten.


    Hab daher einfach mal in der MovieList eine Ausgabe der generierten eServiceReferences mit ServiceReference(serviceref).ref.toString() gemacht.


    4097:0:0:0:0:0:0:0:0:0: war es bei .mp4 und .mpg

    1:0:0:0:0:0:0:0:0:0: war es bei .ts


    Hatte irgendwo auch sowas gefunden, um die Zahlen zu generieren - geht auch ;)

    sref = eServiceReference(4097,0,"/media/hdd/video.mp4")

    self.session.nav.playService(sref)