Hyperion mit WS2812B LEDs

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich versuche hyperion mit nicht direkt unterstützten LEDs zum laufen zu bringen. (das hat bei ambi-tv bereits geklappt)

    Da das image von assispachtel bereits beim booten einige fehler auswirft und später /dev/video0 nicht gefunden wird, würde ich gerne mein image zum laufen bringen.

    Momentan steht im autostart ([font="Calibri"]/etc/rc.local[/font]) folgendes:

    Code
    /usr/bin/gpio2spi </dev/null >/dev/null 2>&1 &
    /usr/bin/mplayer -tv driver=v4l2:width=96:height=54:device=/dev/video0 -vo fbdev -fs -fps 24 -aspect 16:9 -nosound tv:// </dev/null >/dev/null 2>&

    Das Resultat ist die Ausgabe des Videosteams vom Aideograbber.
    Dieses wird beim booten mittig und verkleinert ausgegeben.

    Um genaus zu sein sieht es so aus:
    h50y.jpg

    Allerdings ist das verkleinerte Bild nicht so wie auf meinem Fernseher.
    Es ist zum einen nach rechts verschoben und man sieht daher links einen schwarzen rand beim Bild. (auf dem Bild leider nicht zu erkennen)

    Zum anderen ist das Bild:
    unten leicht abgeschnitten: die unteren 20 pixel vom Bild fehlen
    oben stark abgeschnitten: die oberen 90 pixel fehlen
    rechts stark abgeschnitten, wahrscheinlich zusätzlich noch wegen der verschiebung nacht rechts: die rechten 90 pixel vom Bild fehlen.


    Auch der autostarteintrag von assispachtel:

    Code
    /usr/bin/mplayer -tv driver=v4l2:width=96:height=54:device=/dev/video0 -vo fbdev -fs -fps 15 tv:// </dev/null >/dev/null 2>&1

    gibt den Videostream mit den gleichen Fehlern aus.
    Der HDMI->CVBS Konverter ist auf PAL eingestellt.


    Sollte ich jetzt am monitor irgendwelche veränderungen sehen, wenn ich in den autostart als letztes noch

    Code
    /usr/bin/hyperiond /etc/hyperion.config.json </dev/null >/dev/null 2>&1


    eintrage?

    Außerdem frage ich mich ob ich wie matte1987 eigentlich noch die ausgaben des RPis im Hintergrund sehen müsste:
    Bild
    (Quelle)

    Einmal editiert, zuletzt von Phil333 (23. Januar 2014 um 16:57)

  • Probiere mal diesen Autostart Eintrag, der hat bei manchen Besserung gebracht:

    Code
    /usr/bin/mplayer 
    -tv driver=v4l2:width=96:height=54 device=/dev/video0 -vo fbdev -fs -fps
     15 tv:// </dev/null >/dev/null 2>&1

    Das einfügen der Hyperion Config dürfte, was das Bild angeht nichts ändern.


    Ich hatte auf der Seite des mplayers irgendwann mal was mit "-tv" gelesen:

    http://www.mplayerhq.hu/DOCS/man/de/mplayer.1.html

    Da findest du was -tv macht.

  • Ahh ok dann ist das -tv schonmal erklärt - sehr gut!

    Also ich hatte beim testen gestern herausgefunden, dass folgender Eintrag ein großes Bild mittig anzeigt:

    Code
    /usr/bin/mplayer -tv driver=v4l2:width=96:height=54 device=/dev/video0 -vo fbdev -fs -fps 24 tv:// </dev/null >/dev/null 2>&1 &


    Wenn ich das richtig verglichen habe unterscheidet sich das nur in der framezahlt von deinem eintrag.
    Die wichtige Veränderung ist hier, wie bei dir, der fehlende Doppelpunkt vor device.

    Allerdings habe ich dann immernoch das gleiche Problem, dass auch matte1987 hat mit dem stark abgeschnittenen und (in meinem fall) nach rechts verschobenen Bild.
    siehe hier
    Vielen Dank matte für die Bilder.

    Als Schnittstelle zwischen RPi/Hyperon und meinen LEDs habe ich ein Arduino.
    Da sind leider zu viele Fehlerquellen momentan als das ich weiß wo genau das Problem liegt.
    Als die LEDs dunkel blieben konnte das Problem überall liegen.
    Leider habe ich keine direkt unterstützten LEDs und konnte diese Fehlerquelle bislang nicht ausschließen.
    Dazu weiter unten dann aber mehr...


    Im Hyperion github hat mir poljvd u.a. geantwortet:

    Zitat
    • You set the video size to 96x54, but if you have a STK1160 grabber then downscaling is not supported making this useless.
    • The dispmanx grabber size has nothing to do with the V4L video size. They are completely independent. Probably any dispmanx grabber size will work, but I am not completely certain. In any case 720x540 is unnecessary large. I would advise to leave it at 64x64 untill things work, because that size will not cause problems. Experiment afterwards with the size.

    Weiß er mehr als wir oder weniger?
    Wir/Ich habe/n ja den STK1160 grabber.
    Wird downscaling nun Unterstützt oder nicht?
    Was hat es mit seinem Kommentar auf sich?


    Das Verhalten was ich momentan mit meinem Setting habe ist folgendes:
    Autostart:

    Code
    /usr/bin/gpio2spi </dev/null >/dev/null 2>&1 &
    /usr/bin/mplayer -tv driver=v4l2:width=96:height=54:device=/dev/video0 
    -vo fbdev -fs -fps 24 -aspect 16:9 -nosound tv:// </dev/null 
    >/dev/null 2>&

    Hyperion Konfig:
    http://imagizer.imageshack.us/v2/800x600q90/819/u70o.png
    http://imagizer.imageshack.us/v2/800x600q90/34/ip8i.png
    http://imagizer.imageshack.us/v2/800x600q90/69/l3gf.png

    Das Bild wird mit 96x54 gegrabbt und die Konfig in Hyperion ist ebenfalls auf 96x54 eingestellt und es leuchtet KEINE LED

    Wenn ich die größe in der HyperionKonfig auf 720x540 ändere (und sonst alles so lasse) dann wird beim booten etwa eine Sekunde ein Regenbogeneffekt angezeigt. (sollte eigentlich länger gehen oder?)

    Und anschließend werden die LEDs in der oberen Hälfte beleutet.. Die Positionen allerdings nicht 100%ig übereinstimmend mit dem Bild..

    Da gibt es anscheinend ein Problem zwischen Videostream größe und/oder Position und ausgewertetem Bild.
    Ich weiß allerdings nicht wo das genau das Problem liegt oder wie ich das überprüfen kann, da ich selbst noch totaler Anfänger bin.

    Die reine Übersetzung von Hyperion aud WS2812 LEDs, die das Arduino übernimmt, scheint zu funktionieren (bei ambi-tv funktionierte das absolut fehlerfrei hier gehe ich aufgrund der leutenden oeben Hälfte zumindest davon aus, das es geht bzw. dass das größere Problem bei Grabber/Hyperion liegt)

    Ich hoffe euch fällt was ein, woran es liegt oder was ich tun könnte um weiter zu kommen.

    Liebe Grüße

  • Sorry für Doppelpost, aber das ist es Wert:

    4k78.jpg

    In Worten:
    Das Bild wird komplett dargestellt.
    Keine schwarzen Ränder.
    Keine Verschiebung.

    Leider habe ich sehr wenig Zeit (bald Prüfungen) daher kann ich nicht weiter testen.

  • Ich nutze auch noch ein Ardunio um meine 150 WS2811 zu betreiben. Ich habe alles zum laufen bekommen außer das HDMI Grabbing. Sobald ich Mplayer als Root ausführe, wird das Fenster zentriert dargestellt. Nur wenn ich Hyperion auf FULL-HD einstelle, dann erkennt er das Singal zwar super, aber die CPU ist überfordert und es ruckelt.

    Alle Versuche das Fenster anzupassen, scheitern. Auch das Format auf 16:9 zu ändern sorgt dafür, dass die CPU überlastet ist. Auch mplayer als nicht root auszuführen sorgt für einen erhöhten CPU load.

  • Also abgeschnitten wird es wohl bei jedem.
    Sieht man schön am Red Dot Testvideo, da bleibt die Rechte Seite bei mir Dunkel, weil der Kreis nicht im Bereich ist.

    Einzig und alleine bei 720x576, geht es, aber dann laggt es halt vor sich hin.

    Hab heute Mittag auch einiges Versucht, aber hinbekommen hab ich das leider nicht :(
    Man halt halt die Möglichkeit, klein und abgeschnitten oder groß und laggy.

    Wenn der Grabber sich wirklich nicht skalieren lässt, dann wäre das aber echt beschissen...

  • Schön dass es hier so rege zugeht.
    Ich möchte das nutzen um es voran zu treiben, auch wenn ich wirklich kaum zeit habe.

    lokutus2000: Also das Bildsignal wird bei mir zwar mit einem schwarten Rand rundherum dargestellt, aber es wird kein Bildschirminhalt abgeschnitten wie man in meinem Bild oben sehen kann. Somit wird es bei mir also NICHT abgeschnitten... Zwar gibt es einen "allgemeinen" rand, der leider auch mit "black border detection" nicht abgeschnitten wird, aber mit entsprechenden werten bei horizontalen und vertikalen scan-tiefe bekommt man das zumindest umgangen.

    Meinen autostart kann ich gerade nicht schicken, weil ich momentan nicht an den PC dran komme. (kommt dann später... aber sicher noch diese woche)

    Das ambilight legt ein sehr seltsames verhalten an den tag und ich verstehe noch nicht, warum das so ist.
    Ich versuche das auf Teil-Probleme runter zu brechen.

    0. auflösung des mplayers:
    Es ist schon sehr sehr merkwürdig.
    Bei einer auflösung von 96x54 wird das bild tatsächlich klein ausgegeben, aber es funktionieren nicht alle auflösungen.
    Ich bin allerdings nicht dahinter gekommen warum mal etwas funktioniert und mal nicht.

    1. Das ambilight funktioniert nur, wenn ein monitor am Pi angeschlossen ist
    (dazu gab es mal iiiirgendwo einen workaround, den ich allerding nicht finde..)

    2. hyperion muss dann auf die auflösung des angeschlossenen monitors angepasst werden.
    mein full hd monitor brauchte in der hyperoin config eine auflösung von 1920x1080. (Im knofig tool von hyperion bei "frame grabber" width und height)
    Da das Konfig-Tool gar nicht erst die eingabe solcher werte erlaubt musste ich die config datei nach dem erstellen mit dem editor per hand an entsprechender stelle bearbeiten.
    wenn ein anderer monitor mit anderer auflösung beim booten angeschlossen ist funktioniert das ambilight mit der vorherigen config nicht mehr sauber.
    Daher muss man es irgendwie schaffen hyperion Bildschirmunabhängig zum laufen zu bekommen.

    Ich frage ich an dieser stelle auch, ob das PI dann tatsächlich ein Full HD Bild auswerten muss.

    2.1. Auf dem Bildschirm (full hd) wird nach dem booten der mplayer gestartet, der das videosignal ausgibt.
    Dieses Bild ist allerdings NICHT full HD bzw. nicht vollflächig, auch wenn hyperion die full hd auflösung zum grabben braucht.
    Das wundert mich sehr!
    Der videostream wird auf voller höhe dargestellt, allerdings nicht auf der vollen breite.
    Es ist ein zentriertes, proportional gestrecktes 4:3 bild.


    Mit dem oben genannten setup (full hd monitor am PI angeschlossen und entsprechende auflösung in der konfig) funktioierte dann hyperion, wenn auch noch mit ein paar problemen.

    3. Die Positionszuordnung der LEDs.
    Ich habe leider ein paar besonderheiten und daher passte es nicht 100%ig.
    zu den Besonderheiten:
    - Mein TV hat einen schmalen rand und die LED-Streifen sind daher etwas kleiner als der Bildschirm selbst.
    - Der TV hat unten einen breiteren rand. daher sind die leds nicht auf dem Bildschirm zentriert sondern etwa 2cm nach unten hin versetzt
    schmematisch:
    3jvm.jpg

    4. Außerdem hatte ich eine Verzögerung von ziemlich genau 500ms.
    Wie lasse ich die CPU-Last vom PI anzeigen?
    ich weiß momentan nicht was genau da abgeht.
    es könnte sein, dass das videosignal ganz normal als PAL reinkommt, egal was man einstellt.
    Auch wenn man im mplayer etwas verkleinertes sieht könnte es sein, dass es dennoch weiterhin als PAL verarbeitet wird und nur die ausgabe verändert wird.
    Das würde so gesehen soger eher noch mehr rechenleistung verursachen, weil mplayer das signal zusätzlich zum eigentlich einkommen PAL signal noch runter rechnen muss für die ausgabe.

    Zusätzlich könnte es sein, das hyperion das videosignal irgendwie auf die aktuelle bildschirmgröße (full hd in meinem fall) hochrechnet weil ich mir sonst nicht erklären kann, wesshalb ich in der konfig datei diese auflösung eingeben muss damit es funktioniert.

    5. kein flüssiges ambilight.
    Auch wenn punkt 4 das natürlich auch schon mit beschreibt ist es so, das es nicht nur eine verzögerung gibt, sondern zusätzlich das ambilight "schrittweise" erfolgt.
    Ich hab leider kein video gemacht und das auch nicht genauer analysiert allerings war es so, dass die farben nur alle z.B. 200ms "gesetzt" werden.
    Dieser wert ist jetzt aus der Luft gegriffen - also bitte keine berechnungen damit anstellen woher es kommt :D
    man hat also ein zeitverzögertes, "ruckelndes" ambilight, das nur 5x die sekunde geändert wird.
    Kann allerdings auch mit der CPU last zu tun haben (weiß allerdings nicht wie ich die auslese).

    Ich hoffe hier tut sich was.
    Wenn das hier einmal rund läuft, dann mach in nen tutorial für leute wie mich :D


  • 1. Das ambilight funktioniert nur, wenn ein monitor am Pi angeschlossen ist
    (dazu gab es mal iiiirgendwo einen workaround, den ich allerding nicht finde..)

    Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Lösung für "mplayer läuft nur wenn HDMI Kabel angeschlossen ist" (Danke an "Pieper"):[/font]

    [font="Tahoma, Verdana, Arial, sans-serif"]Bearbeitet folgende Datei:[/font]
    [font="Tahoma, Verdana, Arial, sans-serif"]/boot/config.txt[/font]

    [font="Tahoma, Verdana, Arial, sans-serif"]Sucht nach der Zeile "[/font][font="Tahoma, Verdana, Arial, sans-serif"]#hdmi_force_hotplug=1[/font][font="Tahoma, Verdana, Arial, sans-serif"]" und entfernt die "[/font][font="Tahoma, Verdana, Arial, sans-serif"]#[/font][font="Tahoma, Verdana, Arial, sans-serif"]" davor.[/font]

    Hier zu finden, im ersten Post ;)


    Zu 5.

    Es gibt bei Hyperion die Möglichkeit mit Smoothin zu arbeiten. also das Ambilight bisschen Ruhiger zu gestalten.
    Ich habe da bspw. 200ms und 30Hz eingetragen.
    Bin mir jetzt nicht sicher, aber wenn du die Config öffnest, müsste das ziemlcih weit oben kommen, glaube unterhalb der ganzen Farbeinstellungen.

    Einmal editiert, zuletzt von matte1987 (27. Januar 2014 um 09:20)

  • Das Ambilight ist so langsam weil dann eben das Große Bild ausgewertet wird.

    Wenn ich 720x576 als Auflösung eingebe hab ich auch ein Langsames Ambilight, dann aber Vollständig mit schwarzen Rand!. Alles unter 700xXXX erzeugt bei mir ein abgeschnittenes Bild. Ich mach nachher mal ein paar Screenshots damit ihr auch versteht was ich meine.

    Außerdem Spiel ich gerade mit dem Hyperion eigenen Grabber rum, der braucht dann kein mplayer mehr.

  • Außerdem Spiel ich gerade mit dem Hyperion eigenen Grabber rum, der braucht dann kein mplayer mehr.

    Wie meinst du das???
    Gibts es noch nen anderen als den mit "[font="Tahoma, Verdana, Arial, sans-serif"]STK1160" Chipsatz, welcher funktioniert? Wieso braucht man dann kein Mplayer mehr?

    [/font]

  • Ich zitiere mal ausm Forum

  • Danke für den link matte

    Großes nicht abgeschnittenes Bild:

    Code
    /usr/bin/gpio2spi </dev/null >/dev/null 2>&1 &
    /usr/bin/mplayer -tv driver=v4l2:width=720:height=405 device=/dev/video0 vo fbdev -fs -fps 24 tv:// </dev/null >/dev/null 2>&1 &
    /usr/bin/hyperiond /etc/hyperion.config.json </dev/null >/dev/null 2>&1 &


    Soweit ich das verstanden hab ist das was lokutus "Hyperion eigenen Grabber" nennt ein hyperion interner player der den videostrem abgreift (grabber ist doch hardware oder? nicht das es hier noch mehr zu verwirrung kommt... haben ichschon genug :D :D )

    Zum internen player von hyperion:
    (hier zu funden: Link )
    Der ist gestern raus gekommen und daher backfrisch (evtl. mit fehlern).


    wie bringt man den zum laufen bzw. startet ihn?
    einfach

    Code
    hyperion-v4l2 --crop-height 1 --crop-width 10 --size-decimator 8 --frame-decimator 2 --skip-reply --signal-threshold 0.08


    in den autostart packen?
    so langsam kommt tut sich jedenfalls was.

    wäre auf jedenfall cool, wenn du dem weiter nachgehen könntest lokutus und dabei den v4l2 player immer mal ein screenshot machen lässt...
    (also ohne crop und mit etc...)
    das würde uns helfen zu verstehen wie das teil funktioniert und was hyperion "empfängt".


    Ne Erklärung für die FULL HD einstellung die ich michen muss bei der konfig hat aber keiner oder?
    Vielleicht ist es auch egal, wenn der v4l interne player von hyperion läuft.

    Einmal editiert, zuletzt von Phil333 (27. Januar 2014 um 12:35)

  • Mit dem hyperion-v4l2 grabber bekomme ich zumindest schon mal ein Perfektes Bild hin!

    Auch hab ich herausgefunden das die Niedrigste Auflösung für meinen Grabber 360x288 ist.
    Alles darunter erzeugt nur wieder ein gecropted Bild wo dann wieder die hälfte fehlt.

    So starte ich es

    Code
    /usr/bin/hyperion-v4l2 --width 360 --height 288 --crop-width 5 --crop-height 10 --size-decimator 3 --frame-decimator 1 --skip-reply --signal-threshold 0.05

    Durch den Parameter [font="Monaco, Consolas, Courier, monospace"]--size-decimator [/font]wird das bild verkleiner> 117x89. Das hab ich in der konfiguration eingetragen und es funktioniert. Nichts mehr abgeschnitten, ABER!

    Meine LED Flackern mal wieder, diesmal aber ALLE, also denke ich das liegt nicht an den LED selber sondern noch am Grabber.

    Vielleicht testet das noch einer von euch mal ob es bei euch auch Flackert.

    So sieht das aber schonmal Klasse aus ^^

    Ich hab auchnoch 2 Videos gemacht, diese sind noch in bearbeitung gerade.

  • das ist ja ein minibild :D

    Also das Bild kann ich jetzt nicht auf abschnitte oder ähnlichem überprüfen.
    irgendwie fehlt da ein senderlogo oder so oder?
    Hast du das Bild mit screenshot gemacht und auch nen Monitor am PI dran gehabt um auf übereinstimmung zu prüfen?
    Ist das bild so genauso wie auf dem TV?

    Welchen grabber hast du?
    der v4l2 player unterstützt ja seit gestern sowohl den grabber mit fushicai als auch den STK1160 chip.
    nur damit man hier alles nachvollziehbar hat.

    du hast also ein kleines 5:4 minibild.
    was bringt das weitere verkleinern?
    ist es dann für hyperion weniger rechenintensiv das bild auszuwerten?

    Das Bild muss vorher ja vom v4l2 player klein gerechnet werden, daher bin ich mir nicht sicher ob sich da überhaupt ein vorteil draus ergibt.
    Falls du das mal die cpu last vergleichen könntest wäre das sicherlich hilfreich
    (also ziwschen 360x288 und 117x89.. bzw. vielleicht sogar mit einer vollen PAL auflösung von 720x576).
    Funktioniert denn diese Auflösung bei dir: 480 × 272?
    Das ist das kleinste was gehen müsste mit (fast) 16:9 eventuell hat man damit einen besseren ambilight effekt, weil hier (fast) nichts gestaucht wird.

    Eventuell schaffe ich es morgen zu testen.
    Wie liest man die cpu-last aus?

  • Hier nochmal ein paar Screenshots
    Die wurden so erstellt:

    Code
    hyperion-v4l2 --width 360 --height 288 --crop-width 5 --crop-height 10 --size-decimator 3 --screenshot
    Code
    hyperion-v4l2 --width 720 --height 576 --screenshot --crop-width 10 --size-decimator 8 --crop-height 20


    Das Verkleinern ist eigentlich sogar Wichtig. Erstmal wegen der Rechenleistung und zweitens die Farbmischung. Man braucht für eine led ja ein Farbwert, wenn man das Bild verkleinert wird der durchschnitt berechnet.

    Die Auslastung ist mehr als Super! (Mit top kann man die auslesen)

    Der Hardware Grabber kann nur reine Auflösungen 720x576 als PAL z.b. usw.
    Bei anderen Grabber kann das natürlich auch wieder anders sein.

    Ich hab den [font="Verdana, Arial, sans-serif"]STK1160 Grabber, und der [font="Tahoma, Verdana, Arial, sans-serif"]fushicai soll auch laufen?? Brauch man aber n Treiber für oder?
    Denn den hab ich hier auchnoch rumliegen.[/font][/font]

    [font="Tahoma, Verdana, Arial, sans-serif"]Also 720x576 kann man vergessen, das brauch über 90% CPU![/font]

Jetzt mitmachen!

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