Audio Sync Plugin V1.2 (aka AC3 Lip Sync)

  • Nachdem sich ja hier wieder einiges getan hat, musste ich mal mein AC3LipSync- Plugin genralüberholen.
    Da das Plugin inzwischen ja mehr kann als nur AC3 zu synchronisieren, habe ich mich auf Anraten entschlossen, das Plugin ab sofort "AudioSync"- Plugin zu nennen.


    Ihr solltet das AC3LipSync deinstallieren, bevor Ihr das neue hier installiert.


    Was genau tut das Plugin:
    Es ist in der Lage, Audio sowohl positiv als auch negativ gegenüber dem Videobild zu verschieben.
    Als neues Feature ist nun dazugekommen, dass auch direkt das Globale Delay für den aktuellen Audio- Channel gesetzt werden kann.
    Ausserdem kann nun die Position des Plugins auf dem Bildschirm verschoben werden.


    EDIT: Version 1.0b2: Ich habe das Interface erneut etwas überarbeitet. Anbei ein Screenshot.


    EDIT: Version 1.1: Auf vielfachen Wunsch einzelner Benutzer wurde das Userinterface erneut komplett überarbeitet. Es lassen sich nun immer der Delay für den aktuellen eingestellten Audio- Kanal sowie dessen Globaler delay einstellen. Zum verstellen eines anderen delays einfach über den gelben Button den Audio- Kanal umstellen.


    EDIT: Version 1.2:: Das Plugin ist nun endlich dahin gewandert, wo es hingehört: Auf die gelbe taste (DM8000) bzw. die Audio- taste (DM800 und DM7025). Dadurch ist es wirklich immer erreichbar. Im gleichen Zug wurde das Plugin aus dem Extension- Menu und dem System- Einstellungs- Menu verbannt.


    Das Plugin trägt sich nach wie vor in die Erweiterungsliste, ausserdem in die Plugin- Liste (dort ist der Setup- Teil des Plugins untergebracht) und es errscheint auch noch im Hauptmenu unter Menu - Einstellungen - Audio Sync (weil das Erweiterungsmenu aus dem Movieplayer nicht verfügbar ist).


    Tasten (ACHTUNG: Wurden überarbeitet in 1.1):
    Links / Rechts: Wechseln zwischen Channel Delay und Globalem Delay
    Oben / Unten: Ändern des aktuellen Delays um die im Setup eingestellten Schrittweiten (Standard: 5ms)
    1 / 3 , 4 / 6 , 7 / 9: Ändern des aktuellen Delays um die im Setup eingestellten Schrittweiten für die jeweiligen Tasten (Standard: 50ms , 200ms , 500ms)
    0 , 5 , 8: Ändern des aktuellen Delays auf den im Setup eingestellten absoluten Wert für die jeweilige Taste (Standard: 0ms)
    OK / Grün: Einstellungen speichern und Plugin schliessen
    Exit / Rot: Einstellungen verwerfen und Plugin schliessen
    Gelb: Aktuellen eingestellten Tonkanal des Kanals ändern
    Blau: Aktuell eingestellten Wert auf Taste speichern
    Menu{/b]: Plugin- Menu aufrufen. Aktuell nur ein Menupunkt: Plugin verschieben


    Plugin verschieben:
    Das Plugin kann jetzt frei auf dem Bildschirm verschoben werden. Im Verschiebe- Modus gelten folgende Tasten:
    Zahlentasten: Plugin auf dem Bildschirm an die Position der Taste verschieben (1 = Links oben, 3 = Rechts oben, 4 = Links Mitte, 9 = Rechts unten u.s.w)
    0: Gespeicherte Position löschen (Standard- Position aus dem Plugin verwenden)
    OK / Grün: Einstellungen speichern und zurück zum Plugin
    Exit / Rot: Einstellungen verwerfen und zurück zum Plugin


    ACHTUNG: Es wurden erst am 18.11. Änderungen beim Handling des Globalen Delays eingebaut. In Images vor diesem Datum muss bei gesetztem Globalen Delay einmal umgeschaltet werden, bevor die korrekte Verzögerung verwendet wird, ohne umschalten wird das globale Delay nicht berücksichtigt..


    Das Image sollte generell nicht älter als das Gemini 4.5 sein, weil in dem Bereich in letzter Zeit viel getan wurde. Ach ja: Evtl kommt es auch bei Gemini 4.5 zu einem Crash beim setzen des Globalen Delays, dann muss die Datei config.py (in usr/lib/enigma2/python/components) durch die beigefügte ersetzt werden (auf eigene Gefahr, Neustart danach nicht vergessen !!!), weil es einen Bug in der ConfigSelectionNumber Klasse gab, der erst kürzlich behoben wurde...


    So und jetzt viel Spass mit dem Plugin.


    ACHTUNG: Bisher unterstützen nur die Treiber der Boxen 7025, 800 und 8000 diese Art des Delays. Für alle anderen Dreamboxen mit E2 ist dieses Plugin nutzlos (7020, 600, etc)

  • Hallo!


    Das plugin versucht sich bei mir auf USB zu installieren was es aber nicht schafft da ich nur eine CF in der Box habe.


    Code
    root@dm7025:~# ipkg install /tmp/enigma2*.ipk
    ipkg: Cannot create directory `/media/usb//usr': Input/output error
    ipkg: Cannot create directory `/media/usb//usr': Input/output error
    Installing enigma2-plugin-extensions-ac3lipsync (0.2) to root...
    Configuring enigma2-plugin-extensions-ac3lipsync
    ipkg_conf_write_status_files: Can't open status file: /media/usb//usr/lib/ipkg/status for writing: No such file or directory


    Kann man da etwas machen um es auf Cf zu installieren?


    Gruß RWZ

    Realität ist eine Illusion die durch Biermangel hervorgerufen wird

  • Sorry, da kann ich Dir nicht helfen: Das Plugin installiert sich -wie alle anderen- nach usr/lib/enigma2/Python/Plugins/Extensions


    Der von Dir angegebene Pfad sieht mir eher wie ein temporärer Pfad des IPKG aus.
    Ich vermute, Du hast versucht, Teile Deines Images auszulagern und das ist schiefgegangen. Ich bin mir ziemlich sicher, dass Du momentan per IPKG kein einziges Plugin installieren kannst...


    Prüf mal Dein System / Deine Symlinks und mach einen neuen Thread auf, damit Dir die Linux- Spezialisten helfen können...


    Tode

  • Hallo!


    Ich habe jetzt mal testweise zwei plugin's installiert und die gehen wunderbar und lassen sich auch über ipkg remove entfernen.


    Nun habe ich Dein plugin entpackt und von Hand installiert und es funktioniert tadellos.


    Quote

    Ich vermute, Du hast versucht, Teile Deines Images auszulagern


    Ich habe das ganze Image auf CF
    Vielleicht liegt es daran aber solange der händische Weg geht werde ich das Image, aus Platzmangel, nicht in den Flash packen.


    Nach einigen Tests auf den Premierekanälen muß ich sagen auf dieses plugin habe ich schon lang gewartet. Endlich ist der asynchrone Ton ein Relikt der Vergangenheit.
    Super Arbeit Danke


    Gruß RWZ

    Realität ist eine Illusion die durch Biermangel hervorgerufen wird

  • ich habe das ganze nochmal untersucht... Also erstmal habe ich selbst nur ne CF- Karte in der Box und nichts per USB angeschlossen... Und dann finde ich auch sonst keinerlei Hinweis auf den von Dir angegebenen Pfad.


    Gut: Ich muss gestehen, dass ich gutemines Plugin2IPK - Script nehme, um meine ipkgs zu erstellen, weil ich selbst davon keine Ahnung habe... Aber auch in der verwendeten sh finde ich keinen Hinweis....


    Wäre nett zu hören, ob noch andere das gleiche Problem mit derr Installation haben.


    Ansonsten arbeite ich gerade an einer neuen Version, die es erlaubt, die Zahlen 0 - 9 mit Benutzerdefinierten Delays zu belegen (Umschaltbar zwischen Festen Schritten und Benutzerdefinierten Delays)


    Ausserdem soll (wenn ich das hinkriege) das Plugin auch im Film- Wiedergabe- Modus verfügbar sein...


    Aber ich weiss noch nicht, wann ich das hochladen werde.


    Danke trotzdem fürs positive Feedback. Da sich noch keiner gemeldet hatte, war ich mir nicht sicher, ob überhaupt jemand das Plugin in den aktuellen Images noch braucht...


    Tode

  • Hallo!


    Quote

    ob überhaupt jemand das Plugin in den aktuellen Images noch braucht


    Also ich brauche das auf jeden Fall, denn ich habe auf allen Premierekanälen eine Verzögerung die ich jetzt mit 135msek wegbekommen habe. Diese Verzögerung habe ich mit Gemini 4.0 und auch mit aktuellem Oozoon.
    Ich habe auch mal im Settingseditor mit Delaywerten herumprobiert aber nie Erfolg gehabt.
    Auf die Erweiterung für den Videomodus freue ich mich schon. Dann kann ich mir endlich "Neues aus Waldheim" in AC3 an(hören)schauen.


    Gruß RWZ

    Realität ist eine Illusion die durch Biermangel hervorgerufen wird

  • Solch ein Plugin habe ich schon lange gesucht bzw. darauf habe ich lange gewartet. Daher habe ich es sofort installiert.


    Was ich nicht verstehe: Über die Zifferntasten kann ich in 5ms-Schritten das Delay einstellen. Mit den Pfeiltasten springe ich in 45ms-Schritten (Standardeinstellungen). Müsste es nicht umgekehrt sein?


    Des weiteren habe ich noch 2 Fragen/Anregungen:
    1. Da man das Plugin nur über Lang-BLAU aufrufen kann, kann man es bei Aufnahmen nicht starten. Würde es überhaupt bei aufgenommenen Sendungen funktionieren? Wenn ja, fände ich es klasse, wenn es auch bei Aufnahmen genutzt werden könnte, sie nachträglich "zu synchronisieren".
    2. Könnte man das Delay pro Kanal getrennt einstellbar machen und diesen Wert dann auch permanent an entsprechender Stelle speichern? Dann müsste es man nur einmalig einstellen.


    Bei aller "Kritik": Danke.

  • Quote

    Original von RWZ
    Auf die Erweiterung für den Videomodus freue ich mich schon. Dann kann ich mir endlich "Neues aus Waldheim" in AC3 an(hören)schauen.


    Das Müsste doch eigentlich gehen, wenn du das Delay vorher im TV mode einstellst, und anschliessen die Aufnahme startest.
    Denn so wie das aussieht schreibt das Plugin den Wert nach "/proc/stb/audio/audio_delay_bitstream" und dann wird das Delay überall verwendet bis es zurückgesetzt wird.
    Nur wird im Moment einfach die Auswahlmöglichkeit im Video Mode noch nicht gehen.


    Habe es aber noch nicht versucht, werde das Plugin erst noch installieren.
    Als versuch kann man ja den Wert auch manuell in den proc schreiben.
    Ich habe das bisher mit 2 Userscripts gemacht. ----> Premiere Direkt Unterkanäle Audio Delay

  • Danker an alle für das Feedback.


    Nun zu den Fragen:


    Wie Swissmad richtig erkannt hat, schreibt das Pluign seine Werte permanent weg. Das heisst: So wie er es vorschlägt funktioniert es jetzt schon: Wert im TV- Modus setzen und dann das Video starten.


    Leider hat der Media- Player kein Menu, in das ich mich direkt per Plugin- Descriptor schreiben kann. Das heisst: wollte ich das Plugin "schnell" zugreifbar machen, dann müsste ich Python- Files patchen.


    Das möchte ich aber nicht tun, das Plugin soll möglichst in allen Images und allen Versionen laufen, ohne Abhängigkeiten von bestimmten Versionen anderer Plugins.


    Deshalb werde ich hingehen, und im ersten Schritt in das Setup- Menu des Plugins in den Erweiterungen einen Punkt "Plugin starten" einbauen.


    Dort kommt man über die Menu- Taste von überall hin.


    Zusätzlich könnte ich es unter "Hauptmenu -> Einstellungen -> Audio Delay" packen.


    @Tokamuk:
    Das Delay der Pfeiltasten ist einstellbar (bei einem frisch installierten 0.2er sind das 5ms, wenn Du vorher 0.1 draufhattest, sind es 45ms).
    Das Delay der Zifferntasten berechnet sich aus ((max - min) / 9)*Ziffer


    Bei mir funktioniert das auch ganz genau so. Schreib mir mal die Werte, die Du im Setup eingestellt hast, vielleicht kommen wir so der Sache auf den Grund...


    Die Sache mit dem Delay pro Kanal: Ich hatte befürchtet, dass so ein Wunsch kommen würde, aber auch hier müsste ich wieder ausserhalb des Plugins patchen, um auf das Umschaltevent zu horchen und dann den entsprechenden Delay zu setzen.


    Dafür ist das Plugin aber auch nicht gedacht: Wenn Du mit Hilfe des Plugins einen optimalen Delay- Wert pro Kanal herausgefunden hast, dann kannst Du den ja per Settings- Editor am PC pro Kanal setzen - das geht schon heute.


    Was mich immer gestört hatte: z.B. ARD sendet Live- Programme mit einer anderen Verzögerung als Spielfilme. Und Skispringen hat eine andere Verzögerung als Wetten Dass (zumindest kommt es mir so vor). Und dafür ist das Delay.


    Trotzdem werde ich Dir mit der nächsten Version entgegen kommen. Ich werde speicherbare Delays einbauen... wie genau das aussehen wird, muss ich selbst noch rausfinden. Ich sitze gerade an der neuen Version...


    Und: Kritik ist was gutes... solange sie konstruktiv ist.


    Danke an alle.
    Tode

  • Quote

    Original von TodeDeshalb werde ich hingehen, und im ersten Schritt in das Setup- Menu des Plugins in den Erweiterungen einen Punkt "Plugin starten" einbauen.


    Ja, das würde reichen.


    Quote

    Zusätzlich könnte ich es unter "Hauptmenu -> Einstellungen -> Audio Delay" packen.


    Klingt gut. Dann ist es immer an der gleichen Stelle.


    Quote

    Bei mir funktioniert das auch ganz genau so. Schreib mir mal die Werte, die Du im Setup eingestellt hast, vielleicht kommen wir so der Sache auf den Grund...


    Ich hatte direkt erstmalig die 0.2 installiert. Im Setup stand zu Beginn Minimum 0, Maximum 405, Pfeiltasten 45! Diese Werte habe ich angepasst (Maximum 450, Pfeiltasten 10), nun passt's.
    Vermutlich sind in der Initialisierungsroutine der 0.2 zwei Konstanten vertauscht.


    Quote

    Dafür ist das Plugin aber auch nicht gedacht: Wenn Du mit Hilfe des Plugins einen optimalen Delay- Wert pro Kanal herausgefunden hast, dann kannst Du den ja per Settings- Editor am PC pro Kanal setzen - das geht schon heute.


    Das mache ich heute, ist aber auch beschwerlich. Hier ist dein Plugin Gold wert.
    Sicher kann ich den besten Wert mit dem Plugin herausbekommen und ihm mit DreamboxEdit eintragen. Hier stellt sich aber die Frage, wie dein Plugin mit den voreingestellten Werten umgeht.
    Angenommen, ich habe auf ARD ein Delay von 100ms mit DreamboxEdit einstellt und starte dann dein Plugin. Startet es dann mit 100, oder setzt es den Wert wieder auf 0?
    Vielleicht kannst du in der nächsten Version den Wert, der voreingestellt ist, auch anzeigen?!


    Quote

    Trotzdem werde ich Dir mit der nächsten Version entgegen kommen. Ich werde speicherbare Delays einbauen... wie genau das aussehen wird, muss ich selbst noch rausfinden. Ich sitze gerade an der neuen Version...


    Meines Erachtens kannst du es nur dort abspeichern, wo auch DreamboxEdit es ablegt (vermutlich die Kanalinformationen, aber da kenne ich mich nicht aus). Andernfalls kollidieren die beiden Werte.


    Viele Grüße
    Tokamak

  • Um es eigentlich "richtig" sauber in E2 zu integrieren, müsste das Plugin eigentlich die lamedb auslesen, dann in einer Senderliste alle Delay's anzeigen.
    Dann ausgehend von dem gespeicherten Wert so wie das Plugin jetzt schon ist das Delay verstellen zu können, und anschliessend den Wert auch wieder in die lamedb schreiben.


    Das hört sich jetzt einfach an, ist es aber nicht.
    Denn die lamedb wird beim starten von E2 in's RAM gelesen, und beim beenden wieder zurückgeschrieben.
    Ändert man also während E2 läuft die lamedb, wir das beim beenden von E2 wieder überschrieben.
    Soweit ich informiert bin, gibt es in E2 keine möglichkeit E2 anzuweisen die lamedb im Betrieb neu einzulesen.
    Das Plugin müsste dann also die Änderungen in eine 2. Datei schreiben und dann einen Menüpunkt ["neue Delaywerte an E2 übergeben (ACHTUNG E2 wird neu gestartet"] haben der dann die lamedb mit der vorher abgelegten 2. lamedb überschreibt, und anschliessen E2 "abschiesst" so das E2 die lamedb nicht überschreiben kann.
    Das machen die Settingseditoren ja auch, indem die ein "killall -9 enigma2" absetzten.


    Tode
    Vielleicht ist ja die eine oder andere Idee mit dabei die du verwenden kannst/willst.
    Du hast mit dem Plugin schon eine tolle Arbeit abgeliefert. (Ich kann ja leider KEIN Python ;()


    Also nicht falsch verstehen, ist ja nur im Sinne von:

    Quote

    Original von Tode
    Und: Kritik ist was gutes... solange sie konstruktiv ist.


    Zur Info Auzug aus der lamedb:


    Das Erste
    c:000065,c:010067,c:020068,c:030065,p:ARD


    und nach schreiben von 100ms Bitstream Delay


    Das Erste
    c:000065,c:010067,c:020068,c:030065,c:070064,p:ARD

  • Quote

    Original von Swiss-MAD
    Denn die lamedb wird beim starten von E2 in's RAM gelesen, und beim beenden wieder zurückgeschrieben.
    Ändert man also während E2 läuft die lamedb, wir das beim beenden von E2 wieder überschrieben.
    Soweit ich informiert bin, gibt es in E2 keine möglichkeit E2 anzuweisen die lamedb im Betrieb neu einzulesen.


    Bei DreamboxEdit kann man ein Häkchen setzen, dass die Einstellungen - also auch das Delay - sofort wirksam werden sollen. Demnach müsste es eine Möglichkeit geben, E2 zum Einlesen der lamedb zu bewegen (SIGHUP?).
    Vielleicht ist aber das Häkchen auch wirkungslos. Da ich auf Arbeit bin, kann ich es zur Zeit nicht testen.

    DM7025SS mit GP3

    Edited once, last by Tokamak ().

  • Ich möchte nur nochmal kurz was klarstellen:


    Mein Plugin setzt ein "Globales Delay", das - wenn ich das richtig sehe- die in der lamedb hinterlegten Delays ergänzt.


    Es müsste eigentlich so sein (muss ich noch testen):
    Stelle ich in der lamedb 500ms Verzögerung für ARD und 300ms für das ZDF ein und stelle dann per Plugin das Delay auf 500ms, dann müsste der Ton bei der ARD um 1000ms und beim ZDF um 800ms.


    Beide Werte sind voneinander unabhängig.


    Natürlich könnte ich versuchen Menupunkte "Für diesen Sender in die Lamedb schreiben" und "Für alle Sender in die Lamedb schreiben" zu machen, aber ich fürchte, dass das dann meine Python- Kenntnisse momentan übersteigen würde. Aber wenn natürlich ein erfahrener Programmierer hier einspringen will.. ich habe nichts dagegen und stelle auch gerne die Sourcen zur Verfügung.


    Tode

  • Quote

    Original von Tokamak
    Bei DreamboxEdit kann man ein Häkchen setzen, dass die Einstellungen - also auch das Delay - sofort wirksam werden sollen. Demnach müsste es eine Möglichkeit geben, E2 zum Einlesen der lamedb zu bewegen (SIGHUP?).


    Du hast recht, und ich habe auch schon erfahren, das der Befehl über's E2 WebIF abgesetzt werden kann.....ich weis nur noch nicht wie der Befehl heist....:(


    //EDIT
    So, habe gefunden wie man den Reload der lamedb über das WebIF aufrufen kann:
    http://dream.reichholf.net/wik…ad_lamedb_or_Userbouquets
    So wird es auch in DreamBoxEdit gemacht.

  • Nur damit Ihr nicht einschlaft ein kurzer Zwischenstand: Die Sache mit den speicherbaren Schritten für die Zahlentasten habe ich fast fertig. Ich glaube aber, dass ich diese Version nicht online stellen werde, der Zusatznutzen scheint mir zu klein.


    Nachdem ich die Machbarkeit überprüft habe, habe ich mich für folgende Features für die nächste öffentliche Version entschieden:


    1. Neuer Screen: Posiitonierung am unteren Rand analog zur Infobar. So kann ich mehr Platz beanspruchen und mehr Informationen unterbringen.
    - Informationen im Sceen: Aktuelles Delay aus der Lamedb
    - Informationen über die Tastenbelegung der Farbtasten (werden u.a. zum Umschalten der Zifferntasten zwischen Berechneten und Userdefinierten Schritten dienen)


    2. Neue Funktionen:
    - Wie bereits angekündigt: Speicherbare Schritgrössen für die Tasten 1-9
    - Umschalten zwischen gespeicherten und automatischen Schrittgrössen
    - NEU: Zurückspeichern des aktuellen Delays in die Lamedb für den aktuellen Sender. Dabei wird der aktuelle LameDB- Wert zum manuell gesetzten addiert und der manuell gesetzte Delay auf 0 zurückgestellt.


    Ich habe schon rausgefunden, dass ich per eDVBDB.reloadServicelist() die lamedb neu einlesen kann. - DANKE @
    Swiss-MAD.


    Schön wäre es jetzt natürlich, wenn ich irgendwo das gezielte Schreiben in die LameDB finden würde - dann müsste ich kein File- parsing machen... Aber eventuell werde ich ja in der ServiceScan.py fündig... vielleicht hat ja da noch jemand nen Tipp für mich.


    Wie gesagt: Für einen Python- Neuling ist das schon ein einigermassen grosser Brocken, aber ich tue mein bestes.


    Soweit ein Zwischenstand von mir hier...
    Tode

  • Mal ne kurze Frage:


    Ein negatives Audio Delay ist nicht möglich, oder?


    Denn meine Lip Sync Probleme rühren in aller Regel davon, dass nicht der AC3 Stream vorausläuft sondern das Video.


    Greets
    Zodac


  • Genau das ist auch mein Problem.... ich dachte schon das ich damit alleine stehe! Währe schön, wenn es auch negativ gehen würde!


    cu

    "Diejenigen, die ihre Freiheit zugunsten der Sicherheit aufgeben, werden am Ende keines von beiden haben - und verdienen es auch nicht." Benjamin Franklin

  • Bis jetzt habe ich nur positive Zahlen als Eingabe zugelassen. Ich kann das gerne mal in der nächsten Version ändern, dann sehen wir ja, ob das funktioniert oder nicht...


    Tode

  • Hm,.. negatives Audio Delay????


    Das geht doch garnicht (negativ Delay)!


    Dazu müsstest du den Videostream verzögert ausgeben.


    Ich frag mich nur, warum bei euch der Videostream vorrauseilt, das muss doch ne Ursache haben? Evtl mal die AV Konstelation posten.


    slonnet

    DM8000SS + RGB TFT + Atmolight DMM Experimental OE2.0/GP3
    DM7020HD DMM Experimental OE2.0/GP3
    DM500HD + USB Mod DMM Experimental OE2.0/GP3

    Edited once, last by slonnet ().

  • Meine AV Konstellation:


    Dreambox DM 800 HD PVR
    via HDMI angeschlossen an: LCD TV: Sony KDL 40W4000
    via Toslink angeschlossen an älteren AV Receiver: Panasonic SA HE-70


    Das ist auch schon alles...


    Greets
    Zodac