Jump to content

ExtendedTimeshift Plugin


Headhunter3000

Recommended Posts

Posted

Hi,

 

hier mein erster Versuch eines Plugins in C# (.NET 3.5).

 

Das Plugin prüft vor einem Senderwechsel, ob das aktuelle TV-Signal live oder time-shifted ist, die aktuelle Abspielposition also in der Vergangenheit liegt. Wenn das Signal live ist, erfolgt der Senderwechel wie gewohnt. Nur wenn das Signal time-shifted ist, wird der Benutzer zur Bestätigung des Senderwechsels aufgefordert.

 

Das Verhalten ist ähnlich wie die bereits in DVBViewer integrierte Funktion "Warnung bei Senderwechsel wenn Timeshift aktiv ist", allerdings erfolgt beim Plugin keine Meldung, wenn das Signal live ist, der Timeshiftpuffer also leer ist. Dadurch kann man einerseits bequemer zappen (ohne jedes Mal bestätigen zu müssen), andererseits geht ein evtl. gefüllter Timeshiftpuffer nicht aus Versehen verloren, wenn man den Sender wechselt. Damit das Plugin richtig funktioniert, muss die in DVBViewer integrierte Warnfunktion deaktiviert werden (siehe auch Readme-Datei im ZIP-File).

 

Das Plugin wurde in C# mit Visual Studio 2008 entwickelt. Bei der Entwicklung war folgender Forums-Thread äüßerst hilfreich:

 

http://www.DVBViewer.tv/forum/topic/40060-c-sample-plugin/

 

Hier hat LonelyPixel ein Interface für die Entwicklung von Plugins in C# entwickelt. Dieses Interface wird in meinem Plugin benutzt. Deshalb vielen Dank an LonelyPixel! :)

 

Das ZIP File enthält sowohl das fertige Plugin als auch den Source Code. Zur Installation die Anweisungen in der Readme-Datei in dem ZIP File beachten!

Posted

kanns leider grad nicht testen weil unterwegs aber vielen vielen dank wenn das funktioniert. das stand im forum lange schon in meiner wunschliste, die leider immer wieder ignoriert wurde :(

Posted

nabend

 

also erstmal vielen dank für das plugin! feine und vor allem sehr nützlichen sache

 

zwei „kleinigkeiten“ sind mir aufgefallen:

 

wenn kein sender eingestellt ist und ich dann einen sender anwähle kommt die meldung das timeshift material da ist!

das ist mir nur aufgefallen weil auf dem laptop „schalte letzten sender beim start ein“ nicht angehakt ist

 

das zweite ist:

ich schaue eine aufnahme/serie oder film und wähle dann einen sender… da erscheint wieder die meldung

 

könntest da nochmal schauen

 

grundsätzlich funktioniert es aber

 

beste grüße @lex

Posted

Ist wie beim Scripten, man muss alle Eventualitäten durchspielen die der DVBViewer bietet und das sind nicht wenige.

Per Script kann man das "Timeshift-Überprüfungsscript" beenden/pausieren/loopen lassen wenn kein LiveTV gesehen wird.

Posted

N'Abend,

 

da merkt man, dass ich den DVBViewer nur zum TV gucken verwende. Ein exzessive Beta-Test-Phase habe ich da nicht eingelegt. :whistle:

 

Ich werde mal gucken, was sich machen lässt. :)

Posted

hallöchen

 

das ging ja fix mit dem update… danke

die zwei sachen die ich angemerkt hatte passen jetzt perfekt

 

nur eine kleine sache fehlt zur perfektion:

man schaut versetzt tv und wählt dann eine datei zur wiedergabe aus… da fehlt dann die meldung noch

 

sonst funktioniert es wie es soll

 

besten danke und grüße

 

@lex

Posted

@lex: Noch ein Szenario, an das ich nicht gedacht habe. Guter Tester! ;)

 

Ich gucke mal, was sich machen lässt.

Posted

@lex: Ich muss Dich leider enttäuschen. Ich sehe im Moment keine Möglichkeit, VOR dem Abspielen eines Videos oder einer DVD per Code in den Ablauf von DVBViewer einzugreifen. Es wird einfach nicht das entsprechende Ereignis gefeuert.

 

Diese Situation gibt es leider bei vielen Funktionen im DVBViewer, oder genauer gesagt in der COM-Schnittstelle. Man bekommt immer nur signalisiert, wenn etwas bereits ausgeführt wurde, nicht bevor etwas ausgeführt wird, so dass man die Funktion noch abbrechen könnte. :sadwalk:

 

Die Methode zum Senderwechsel, die im Plugin benutzt wird, ist meines Wissens die einzige, die nach diesem VORHER->ABBRECHEN-Schema arbeitet.

 

Normalerweise hilft in solchen Szenarios immer, in den Optionen eine eigene Taste ("Action") für die ggf. abzubrechende Aktion zu definieren und diese Taste dann z.B. per Skript (command.vbs) oder Plugin abzufangen. Dann hat man die Möglichkeit, eigene Checks durchzuführen und nur wenn diese erfolgreich sind, den Originalbefehl abzuschicken. Leider ist das hier nicht möglich, da dass Abspielen eines Videos oder einer DVD nicht über einen einzigen Tastendruck geschieht, sondern über ein OSD-Menü (Aufnahmen) oder einen Menübefehl (z.B. Mediadatei öffnen).

 

Solange also die COM-Schnittstelle nicht um solche VORHER->ABBRECHEN-Ereignisse ergänzt wird, sehe ich keine Möglichkeit, dieses gewünschte Feature zu realisieren. :(

Posted

nabend

 

das es bei den beiden angesprochenen problemen nun erstmal keine lösung ist zwar „ärgerlich“ aber für meine bedürfnisse langt es auch so!

 

ich hatte bis jetzt die warung vom viewer immer deaktiviert… das war beim zappen einfach nur nervig

 

mit deinem plugin ist man gut abgesichert und das soll mir reichen

 

danke für die arbeit

 

beste grüße @lex

Posted

Noch mal eine Nachfrage:

 

das es bei den beiden angesprochenen problemen nun erstmal keine lösung...

 

Welches Problem außer "Warnung bei Videostart" besteht denn noch? Habe ich was übersehen...? :)

Posted

morgen

 

Welches Problem außer "Warnung bei Videostart" besteht denn noch? Habe ich was übersehen...?

nein du hast nix übersehen! das mit dem videostart war das einzige was mir noch aufgefallen war

 

sorry für die verwirrung

 

grüße @lex

  • 2 months later...
Posted

Hi,

 

meinst du das Plugin ließe sich noch auf die Video A/B umschaltung erweitern?

 

 

Posted

Hi Freezer,

 

hier ist dasselbe Problem wie oben beschrieben: Das Plugin bekommt erst mit, dass Video A/B gedrückt wurde, NACHDEM der Videowechsel bereits ausgeführt wurde. Das ist dann leider schon zu spät. Bevor die COM-API von DVBViewer nicht entsprechend erweitert wird, kann man so etwas nicht über COM oder Plugin realisieren.

 

Allerdings kann man dieses Feature über VBScript und eigene Action-IDs in der command.vbs realisieren. Siehe z.B. iMonPad & MCE Konfig von Tüftler (dort gibt es z.B. eine Warnung bei Neuaufbau der Wiedergabe, wenn Timeshift aktiv ist). Wie der Code aussieht, der auf ein Nicht-Live-Signal prüft, kannst Du hier einsehen:

 

http://www.DVBViewer.tv/forum/topic/42692-verbesserte-timeschift-warnung/page__view__findpost__p__315237

  • 3 weeks later...
Posted

Danke für das Plugin.

Jedesmal, wenn eine Timeshift Aufnahme durch einen unachtsamen Tastendruck verloren ging, habe ich nach einer Lösung gesucht, jetzt ist sie endlich da.

Nun muss man nicht mehr das geringere Übel wählen aus autom. Start ohne Warnung und manuellem Start mit Warnung.

 

(Ich kann absolut nicht verstehen, wieso die Entwickler des DVB-Viewers in einem anderen Thread diese Option als unnötig bewertet haben...)

Posted (edited)

Bei mir sorgt das Plugin dafür, dass DVBViewer Pro 4.6.0.1 nicht mehr weiterlädt, hängt dann bei "Completing Initialization", trat auch schon bei 4.6.0.0 auf; ältere Versionen hab ich nicht.

 

Sobald ich es aus dem Plugin-Ordner entferne, lädt DVBViewer wieder. Die Base und Interop DLLs sind im DVBViewer Ordner, die ExtendedTimeshift DLL im Plugins Ordner.

 

Komplettes Neukompilieren hat auch nichts gebracht.

 

/edit: Hm wo ist mein Anhang geblieben; naja wenn du noch Infos brauchst sag Bescheid. Einsatz erfolgt unter Win7 64-Bit.

Edited by Mars
Posted (edited)

Sorry für Doppelpost, aber Editieren geht nicht mehr.

 

Das vorgenannte Problem lag daran, dass ich nicht gesehen hatte, dass der Anhang im Thread-Erst-Post nicht die aktuelle Version ist. Mit 1.0.0.1 geht's.

 

Das Plugin tut aber dennoch nichts. Ich habe noch nicht die Plugin-Logik ganz verstanden; sehe ich es richtig, dass das Plugin bei Verwendung vom Recording Service (trotz dass das Umschalten im Client geschieht) nicht funktioniert, da es Interaktion erfordert?

Wenn ja, ist da irgendwie ein Workaround möglich? (im Plugin; per Skript ist ja doch etwas hakelig)

Edited by Mars
Posted (edited)

@Mars: Das Plugin sollte keine Probleme mit Recording Service machen. Ich selbst setze auch Recording Service 1.6.9 Beta und DVBViewer 4.6.0.1 ein. Das Plugin läuft bei mir ohne Probleme.

 

Hast Du die Hinweise in der Readme-Datei beachtet (Senderwechsel-Warnoption in den DVBViewer-Optionen ausschalten, Automatischer Timeshift-Start natürlich an!).

 

Wenn Du ganz norrmal TV guckst und nie zurückspulst oder Pause drückst (also das TV-Signal nie zeitversetzt wird), wirst Du nie eine Warnmeldung erhalten (also alles ganz normal). Nur bei zeitversetztem Signal kommt beim Umschalten eine Bestätigungsfrage.

Edited by Headhunter3000
Posted

Ich weiß zwar nicht warum, aber wenn ich die DLLs aus dem Bin-Ordner nehme, funktioniert es. Nur bei den selbstkompilierten funktioniert es nicht.

 

Falls du weißt warum, kannst du es mir ja mal bitte schreiben (ich möchte ggf. auch mit C# ein Plugin programmieren); ansonsten reicht mir das erstmal.

 

Danke für das Plugin... schade, dass die Funktion nicht als Option in DVBV eingebaut wird.

Posted

Hallo Mars,

 

der DVBViewer-Plugin-Mechanismus funktioniert nicht über COM und kennt auch kein .NET. Deshalb muss man die Plugin-DLL nach dem Kompilieren nochmal "nachbearbeiten", so dass sie die vom DVBViewer benötigten Methoden exportiert. Dadurch kann dann jede unmanaged Application (also auch DVBViewer) ganz klassisch die .NET-DLL laden (z.B. mit LoadLibrary() in C++) und auf die exportierten Methoden zugreifen. Eine nette Methode, um die .NET-Welt mit der "Unmanaged"-Welt zu verheiraten, ohne mit COM herumhantieren zu müssen. Mehr Infos dazu hier:

 

http://www.DVBViewer.tv/forum/topic/40060-c-sample-plugin/

http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/

 

 

Um das zu erreichen, wird in meinem ExtendedTimeshift-C#-Projekt im PostBuild-Event das Tool "NetDllExport.exe" aufgerufen, das dem Projekt beiliegt (stammt auch aus dem ersten oben angegebenen Link). Läuft dieser PostBuild-Befehl bei Dir korrekt durch (beim Kompilieren in Visual Studio -> Ausgabefenster beobachten!)? Eventuell kannst Du mit den Kommandozeilenparametern des Tools spielen, ist aber eigentlich nicht nötig.

 

Hast Du evtl. Änderungen am Code vorgenommen? Gerade in der DllExport.cs muss man vorsichtig sein.

Posted

So, habe das Plugin nun endlich auch mal installiert, läuft soweit bis auf die schon angesprochenen Sachen (Start von Dateiwiedergabe, A/B-Umschaltung usw.) perfekt.

 

Vielen Dank für dieses tolle Plugin :)

 

 

Posted

Hallo Headhunter3000,

 

danke für die ausführliche Erklärung. Das Plugin lädt nun korrekt, allerdings wird die Abfrage, ob Timeshift aktiv ist, nicht korrekt durchlaufen; damit werde ich mich aber bei Bedarf näher beschäftigen... momentan reicht's mir erstmal, dass die vorkompilierte Plugin-DLL korrekt läuft.

Posted

Hallo Mars,

 

was wird denn nicht korrekt durchlaufen? Vielleicht kann ich helfen. ;-)

Posted (edited)

Der Nachfragedialog wird nicht angezeigt, und die Funktion wird dann auch nicht weiter ausgeführt. Erst wenn ich den Timeshift wieder in Livezustand versetze, und entsprechend kein Dialog angezeigt wird, wird die (nochmals aufgerufene) Funktion komplett durchlaufen.

DVBV scheint dieses "Hängen" der Funktion übrigens auch zu betreffen... der Sender wird nicht umgeschaltet, und stattdessen wird beim Drücken einer Zahl diese der vorherigen Eingabe hinzugefügt (also Umschalten auf Sender 3, Funktion hängt bei Nachfrage, einige Sekunden später Sender 5 drücken, und im OSD wird daraus dann 35)

 

PS: Ich verwende den Recording Service; das Plugin ist aber im normalen DVBV-Plugins-Ordner und bei dem vorkompilierten Plugin funktioniert ja auch die Nachfrage.

Edited by Mars
Posted

Hm, ist ja seltsam...

 

Wenn ich Dich richtig verstanden habe, dann tritt dieses Verhalten nur bei der von Dir selbst kompilierten Version auf(?)

 

Ich habe die Kompilate mit Visual Studio 2008, also mit .NET 3.5 erstellt. Benutzt Du Visual Studio 2010 (also .NET 4.0)? Wenn ja, könnte es vielleicht sein, dass das Verändern des IL-Codes durch das "NetDllExport.exe"-Tool nicht so recht .NET 4.0-kompatibel ist. Du kannst in Visual Studio 2010 aber auch .NET 3.5-Projekte erstellen und bearbeiten. Vielleicht musst Du das mal so probieren.

Posted

Danke, das scheint der entscheidene Hinweis gewesen zu sein; es tritt nur bei den von mir selbst kompilierten auf und ich benutze Visual C# 2010 Express. Ich habe das Projekt nun wieder auf .NET 3.5 zurückgestellt (es wurde automatisch beim "Konvertieren" des Projektes auf 4.0 umgestellt) und nun kommt auch die Abfrage und es wird beim Akzeptieren auch umgeschaltet.

  • 1 year later...
Posted

gesucht (w00t) gefunden

 

Danke!

 

Das gehört definitv ins WIKI

  • 1 year later...
Posted

Funktioniert das "ExtendedTimeshift Plugin" bei Euch noch?

 

Bei mir hatte es bereits lange Zeit funktioniert, aber ich bekomme es leider seit Monaten nicht mehr dazu, seine Funktion zu erfüllen.

Wenn ich den Stream angehalten hatte (also Timeshift aktiv ist), dann kommt keine Umschaltwarnung, und ich kann zudem nicht mehr auf einen anderen Sender umschalten.

Das Umschalten wird erst dann nicht mehr blockiert, wenn ich den Timeshift Modus zuvor deaktiviere.

 

Ich habe bereits unzählige Male die Installation des "ExtendedTimeshift Plugin" überprüft, kann aber keinen Fehler entdecken.

Was könnte da schief laufen?

 

MfG

Jürgen

  • 5 months later...
Posted

Danke für das Plugin. Es scheint immer noch zu funktionieren. Wie wäre es mit nem einstellbaren Grenzwert? :)

Posted (edited)

Ich habe leider weiterhin das in #29 beschriebene Problem. :wassat:

Könnte es an der bei mir installierten aktuellen NET Version (v4.5.1, also nicht v3.5x) liegen?

 

MfG

Jürgen

Edited by Lilien
Posted

Hab auch die neuste Version. Liegt's vielleicht am Skin oder einem anderen (Timeshift-)Plugin?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...