dbraner Posted May 31, 2012 Share Posted May 31, 2012 Gibt es eine Möglichkeit, in der command.vbs zu erkennen, ob gerade der schnelle Vorlauf bei einer Medienwiedergabe aktiv ist? Die Datamanager Variable #currentspeed wird zwar bei Vorlauf auf ">>2" usw. gesetzt, beim Beenden des Vorlaufs aber leider nicht zurückgesetzt (z.B. auf ">>1"). Quote Link to comment
Tüftler Posted May 31, 2012 Share Posted May 31, 2012 Da hast du recht. Vorschlag: Du könntest die Variable vor dem Abfragen auf 0 setzen und würdest so feststellen können ob sie mit dem aktiven Wert wieder überschrieben wurde. Ich melde das Verhalten aber mal weiter. Quote Link to comment
dbraner Posted May 31, 2012 Author Share Posted May 31, 2012 Da hast du recht. Vorschlag: Du könntest die Variable vor dem Abfragen auf 0 setzen und würdest so feststellen können ob sie mit dem aktiven Wert wieder überschrieben wurde. Ich melde das Verhalten aber mal weiter. Die Variable wird immer mit dem aktuellen Wert überschrieben, nur eben nicht beim Abschalten des Vorlaufs (wenn man beim Vorlauf Play oder Pause drückt). Rücklauf habe ich übrigens nicht getestet. Vor dem ersten Spulen ist die Variable leer. Danach enthält sie die zuletzt eingestellte Geschwindigkeit größer 1. Ich denke, das ist ein Bug (sehr kleiner). Vielleicht kann man das in einem der nächsten Releases korrigieren. Mein Problem ist, dass ich bei der Medienwiedergabe die Play-Taste gerne als Start/Stop Schalter verwenden möchte. Um mit Play auch das Spulen abzuschalten, muss ich wissen, ob es eingeschaltet ist. Und dafür würde sich die Variable anbieten. Quote Link to comment
Tüftler Posted May 31, 2012 Share Posted May 31, 2012 wird sie auch mit dem vorhergehenden Wert überschrieben wenn das Spulen nicht mehr aktiv ist, also wenn du ihn vorher nullst/überschreibst? Quote Link to comment
Tüftler Posted May 31, 2012 Share Posted May 31, 2012 Mein Vorschlag geht nicht da die Variable nur einmalig, bei einer Änderung, gesetzt wird (aufheben des Spulens/Springens zählt derzeit nicht dazu). Lars schaut sich das an. Quote Link to comment
mague Posted June 1, 2012 Share Posted June 1, 2012 (edited) Ansonsten schau mal uplugininterfaces.pas aus den sourcen von myPrograms an. Es gibt actions wie ACTION_NONE = $FFFFFFFF; ACTION_PAUSE = $00000000; ACTION_FORWARD = $00003010; ACTION_REWIND = $00003011; oder messages OSD_MSG_PLAYBACK_STOPPED = $0000000B; OSD_MSG_PLAYLIST_CHANGED = $0000000C; OSD_MSG_PLAYBACK_ENDED = $0000000D; OSD_MSG_PLAYBACK_STARTED = $0000000E; OSD_MSG_PLAY_FILE = $0000000F; OSD_MSG_STOP_FILE = $00000010; OSD_MSG_SEEK_FILE_PERCENTAGE = $00000011; OSD_MSG_SEEK_FILE_END = $00000012; OSD_MSG_SEEK_NEXT_FILE = $00000013; OSD_MSG_SEEK_PREV_FILE = $00000014; OSD_MSG_SEEK_FILE_BEGIN = $00000015; Allerdings bin ich nicht sicher ob du an die in der command.vbs kommst. Und wenn, ist nicht sicher ob sie helfen. Edited June 1, 2012 by mague Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 (edited) Ich meine bei den vom DVBV aufgerufenen vbs Skirpten ist die Laufzeit begrenzt. D.h. dort kann man nicht auf Events (wobei ich auch nicht sicher bin ob die helfen) warten. Höchstens man lagert diesen Teil auf ein weiteres Skript aus? Am einfachsten wäre wenn die Variable im Datamanager immer entsprechend aktualisiert wird. Mal abwarten ob Lars da eine Lösung findet. Edited June 1, 2012 by nuts Quote Link to comment
Tjod Posted June 1, 2012 Share Posted June 1, 2012 Mit -1 sollte man in der aktuellen Version das Script Timout abschalten können. Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 Ist das zu empfehlen? z.B. könnte die command.vbs nach dem ersten Aufruf in einer endlosschleife verweilen und auf Events lauschen. In dieser Zeit könnte die command.vbs vom DVBV erneut aufgerufen werden. Was passiert dann? Quote Link to comment
dbraner Posted June 1, 2012 Author Share Posted June 1, 2012 Ist das zu empfehlen? z.B. könnte die command.vbs nach dem ersten Aufruf in einer endlosschleife verweilen und auf Events lauschen. In dieser Zeit könnte die command.vbs vom DVBV erneut aufgerufen werden. Was passiert dann? Ist nicht zu empfehlen. Hatte das mal eingestellt und dann noch einen Denkfehler im Script. Das hing dann dermaßen, dass ich den Viewer killen musste. Um vernünftig auf die Messages SEEK .. BEGIN /END reagieren zu können, bräuchte es schon ein Plugin. Ziemlich viel Aufwand, nur um eine Variable zu setzen. Vielleicht kann Lars das einfacher lösen. Schlimmstenfalls muss ich halt doch eine separate Taste auf der FB spendieren. Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 Denke ich auch. Keine Schleifen und möglichst schnell wieder raus aus den Skripten. Ich würde auch mal abwarten was Lars dazu einfällt. Quote Link to comment
dbraner Posted June 1, 2012 Author Share Posted June 1, 2012 (edited) Ich denke, ich habe einen Workaround gefunden. Hier mal ein kleiner Codeschnipsel in Pseudocode (kein korrektes VBS) aus der command.vbs: case 30001: ' Custom Play Command ' Nur bei Wiedergabe oder timeshift interessant if ismediaplayback or istimeshift then cs = datamanager.value ("#currentspeed") if cs = "" or cs = "1" then ' Wenn seek aus, dann schaltet Play die Wiedergabe ein/aus sendcommand (0) ' toggle start/stop else ' Wenn seek ein, dann schaltet Play seek aus sendcommand (92) ' Action play = seek ausschalten ' setze Variable auf seek = aus = 1 datamanager.value ("#currentspeed") = "1" endif else ' ansonsten normale Action play sendcommand (92) endif Soll folgenden Effekt haben: Wenn bei Medienwiedergabe oder Timeshift kein Vorlauf oder Rücklauf aktiv ist, soll die Play-Taste zwischen Wiedergabe und Stop umschalten. Wenn der Vorlauf ider Rücklauf aktiv ist, soll die Play-Taste diesen abschalten und normal abspielen. Wenn ich da jetzt keinen Denkfehler drin hab, sollte es gehen. Testen geht erst heute abend. Edited June 1, 2012 by dbraner Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 Das funktioniert allerdings nur wenn "Custom Play Command" die einzige Möglichkeit ist den schnellen Vorlauf zu beenden. Quote Link to comment
mague Posted June 1, 2012 Share Posted June 1, 2012 Wenn ich da jetzt keinen Denkfehler drin hab, sollte es gehen. Testen geht erst heute abend. Notfalls setzte deine eigene #dbraner.currentspeed und pruefe gegen die. Dann kann dir der Viewer nicht dazwischenfunken. Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 Wie gesagt muss man dann wirklich jede Aktion die Einfluss auf den "schnellen Vorlauf" hat auch behandeln. Abschließend drüber nachgedacht habe ich noch nicht, aber das dürften doch einige sein oder? Schöner wäre wenn der DVBViewer das richtig setzt. Aber dort könnte das gleiche Problem drohen? Quote Link to comment
dbraner Posted June 1, 2012 Author Share Posted June 1, 2012 Wie gesagt muss man dann wirklich jede Aktion die Einfluss auf den "schnellen Vorlauf" hat auch behandeln. Abschließend drüber nachgedacht habe ich noch nicht, aber das dürften doch einige sein oder? Schöner wäre wenn der DVBViewer das richtig setzt. Aber dort könnte das gleiche Problem drohen? Ich dachte, ich hätte mit Play, Pause und Stop alle Einflüsse abgefangen, die den Vorlauf beenden können. Nun kann man aber beim Vorlauf die Geschwindigkeit wieder mit der Rücklauftaste reduzieren. Dabei wird auch #currentspeed entsprechend wieder angepasst. Aber leider nur runter bis auf ">>2". Wenn man per Rücklauf dann den Vorlauf komplett ausschaltet, ändert er die Variable wieder nicht. Mal sehen: vielleicht ist es Programm intern ja einfacher zu lösen. Quote Link to comment
nuts Posted June 1, 2012 Share Posted June 1, 2012 Die Wiedergabe eines anderen Files während des schnellen Vorlaufs würde mir spontan noch einfallen. Gibts bestimmt noch ein paar andere Spezialfälle die zu beachten wären. 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.