Headhunter3000 Posted October 23, 2010 Share Posted October 23, 2010 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! Quote Link to comment
skeal Posted October 23, 2010 Share Posted October 23, 2010 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 Quote Link to comment
Headhunter3000 Posted October 23, 2010 Author Share Posted October 23, 2010 @skeal: Eine ähliche Diskussion habe ich auch erlebt: http://www.DVBViewer.tv/forum/topic/42692-verbesserte-timeschift-warnung/ Im Endeffekt war es aber eine gute Gelegenheit, sich (zuerst) mit VBScript und (danach) mit der Plugin-Programmierung zu beschäftigen. Quote Link to comment
@lex Posted October 23, 2010 Share Posted October 23, 2010 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 Quote Link to comment
Tüftler Posted October 23, 2010 Share Posted October 23, 2010 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. Quote Link to comment
Headhunter3000 Posted October 23, 2010 Author Share Posted October 23, 2010 N'Abend, da merkt man, dass ich den DVBViewer nur zum TV gucken verwende. Ein exzessive Beta-Test-Phase habe ich da nicht eingelegt. Ich werde mal gucken, was sich machen lässt. Quote Link to comment
Headhunter3000 Posted October 24, 2010 Author Share Posted October 24, 2010 So, hier ist eine "Nicht-TV-kompatible" Version des Plugins. ExtendedTimeshift Plugin v1.0.0.1.zip Quote Link to comment
@lex Posted October 24, 2010 Share Posted October 24, 2010 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 Quote Link to comment
Headhunter3000 Posted October 24, 2010 Author Share Posted October 24, 2010 @lex: Noch ein Szenario, an das ich nicht gedacht habe. Guter Tester! Ich gucke mal, was sich machen lässt. Quote Link to comment
Headhunter3000 Posted October 24, 2010 Author Share Posted October 24, 2010 @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. 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. Quote Link to comment
@lex Posted October 24, 2010 Share Posted October 24, 2010 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 Quote Link to comment
Headhunter3000 Posted October 25, 2010 Author Share Posted October 25, 2010 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...? Quote Link to comment
@lex Posted October 25, 2010 Share Posted October 25, 2010 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 Quote Link to comment
Freezer Posted January 2, 2011 Share Posted January 2, 2011 Hi, meinst du das Plugin ließe sich noch auf die Video A/B umschaltung erweitern? Quote Link to comment
Headhunter3000 Posted January 2, 2011 Author Share Posted January 2, 2011 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 Quote Link to comment
RobertSmith Posted January 21, 2011 Share Posted January 21, 2011 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...) Quote Link to comment
Mars Posted January 22, 2011 Share Posted January 22, 2011 (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 January 22, 2011 by Mars Quote Link to comment
Mars Posted January 22, 2011 Share Posted January 22, 2011 (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 January 22, 2011 by Mars Quote Link to comment
Headhunter3000 Posted January 23, 2011 Author Share Posted January 23, 2011 (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 January 23, 2011 by Headhunter3000 Quote Link to comment
Mars Posted January 23, 2011 Share Posted January 23, 2011 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. Quote Link to comment
Headhunter3000 Posted January 23, 2011 Author Share Posted January 23, 2011 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. Quote Link to comment
Freezer Posted January 23, 2011 Share Posted January 23, 2011 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 Quote Link to comment
Mars Posted January 24, 2011 Share Posted January 24, 2011 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. Quote Link to comment
Headhunter3000 Posted January 24, 2011 Author Share Posted January 24, 2011 Hallo Mars, was wird denn nicht korrekt durchlaufen? Vielleicht kann ich helfen. ;-) Quote Link to comment
Mars Posted January 25, 2011 Share Posted January 25, 2011 (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 January 25, 2011 by Mars Quote Link to comment
Headhunter3000 Posted January 25, 2011 Author Share Posted January 25, 2011 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. Quote Link to comment
Mars Posted January 26, 2011 Share Posted January 26, 2011 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. Quote Link to comment
der_jensn Posted January 31, 2012 Share Posted January 31, 2012 gesucht gefunden Danke! Das gehört definitv ins WIKI Quote Link to comment
Lilien Posted August 28, 2013 Share Posted August 28, 2013 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 Quote Link to comment
Sagehorn Posted January 28, 2014 Share Posted January 28, 2014 Danke für das Plugin. Es scheint immer noch zu funktionieren. Wie wäre es mit nem einstellbaren Grenzwert? Quote Link to comment
Lilien Posted January 28, 2014 Share Posted January 28, 2014 (edited) Ich habe leider weiterhin das in #29 beschriebene Problem. Könnte es an der bei mir installierten aktuellen NET Version (v4.5.1, also nicht v3.5x) liegen? MfG Jürgen Edited January 28, 2014 by Lilien Quote Link to comment
Sagehorn Posted January 28, 2014 Share Posted January 28, 2014 Hab auch die neuste Version. Liegt's vielleicht am Skin oder einem anderen (Timeshift-)Plugin? Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.