Jump to content

DVBViewer unter Vista nach Standby starten


topcaser

Recommended Posts

Posted

Hallo,

 

ich habe einen reinen HTPC aufgesetzt: Wenn ich den Rechner komplett neu hochfahre, so springt der DVBViewer an (Autostart). Nun habe ich mir so eine tolle Fernbedienung von Pearl gekauft: Wenn ich da den Ausschaltknopf drücke, so geht Vista brav in den Standby. Damit der DVBViewer auch wieder hochkommt, wenn ich nun starte, so habe ich mir den Hibernation Trigger installiert.

 

Folgende Batch-Skripte habe ich nun geschrieben:

1. Wenn ich in den Standby fahre:

start "" "c:\program files\DVBViewer\DVBViewer.exe" "-x12326"

 

2. Wenn ich aus den Standby hochfahre:

choice /c:xy /t:12 /d:x >NUL
start "" "c:\program files\DVBViewer\DVBViewer.exe"
choice /c:xy /t:60 /d:x >NUL
start "" "c:\program files\DVBViewer\DVBViewer.exe"
exit

 

Das ganze funktioiniert suboptimal:

1. Manchmal tuned der DVBViewer beim Starten nicht richtig. Das kommt aber eher seltener vor.

2. Das weitaus grössere Problem istt, dass die Zeit nicht ausreicht beim Beenden, dass der DVBViewer ausber beendet wird und der Recording Service Zeit genug hat zu starten. Ich habe dazu heute früh eine Probeaufnahme geplant um 12:20Uhr, aber wie man am Log sieht, hat sich der Recording Service nicht eingeschaltet:

03.11.2008 05:45:02 Start App -----------------------------------

03.11.2008 05:45:02 thread service started

03.11.2008 05:45:02 StartService start timer

03.11.2008 05:45:02 StartService create plugin list

03.11.2008 05:45:02 StartService loadchannellist

03.11.2008 05:45:02 TDVBDeviceInitDevice Loading: DTV-DVB Mantis DVBC BDA Receiver

03.11.2008 05:45:02 Device @device:pnp:\\?\pci#ven_1822&dev_4e35&subsys_....

03.11.2008 05:45:02 loadsetup load vcr

03.11.2008 05:45:02 StartService load setup

03.11.2008 05:45:02 Recorderservice Enabled

03.11.2008 05:45:15 StopService start stopping service

03.11.2008 05:45:15 savesetup save vcr

03.11.2008 05:45:15 Stop Couninitialize

03.11.2008 05:45:15 Recorderservice Disabled

03.11.2008 05:45:15 StopService stop service

03.11.2008 05:45:15 Execute setrunning false

03.11.2008 05:45:15 Execute release shared

03.11.2008 05:45:15 Execute Couninitialize

03.11.2008 05:45:15 thread service ended

03.11.2008 05:45:15 End App -----------------------------------

03.11.2008 17:41:21 Start App -----------------------------------

03.11.2008 17:41:21 thread service started

03.11.2008 17:41:21 StartService start timer

03.11.2008 17:41:21 StartService create plugin list

03.11.2008 17:41:21 StartService loadchannellist

03.11.2008 17:41:21 TDVBDeviceInitDevice Loading: DTV-DVB Mantis DVBC BDA Receiver

03.11.2008 17:41:21 Device @device:pnp:\\?\pci#ven_1822&dev_4e35&....

03.11.2008 17:41:21 loadsetup load vcr

03.11.2008 17:41:21 StartService load setup

03.11.2008 17:41:21 Recorderservice Enabled

03.11.2008 17:41:35 StopService start stopping service

03.11.2008 17:41:35 savesetup save vcr

03.11.2008 17:41:35 Stop Couninitialize

03.11.2008 17:41:35 Recorderservice Disabled

03.11.2008 17:41:35 StopService stop service

03.11.2008 17:41:35 Execute setrunning false

03.11.2008 17:41:35 Execute release shared

03.11.2008 17:41:35 Execute Couninitialize

03.11.2008 17:41:35 thread service ended

03.11.2008 17:41:35 End App -----------------------------------

 

 

Habt ihr bessere Vorschläge, wie ich das ganze gestalten kann? Das Ausschalten über die Austaste der Fernbedienung ist halt sehr einfach und verständlich, auch für einen Laien...

Posted

Weiß jetzt nicht ob ich richtig verstanden habe den eigentlich ist das ja einfach.In den Optionen des DVBV

beim betätigen der Powertaste in Standby gehen wählen.Ich habe eine TT Remote und eine ImonPad hab

das ganze dann auf einer Harmony 885 konfiguriert.

 

gruß

Posted

Hallo!

 

Habe mit dem Recording Service leider keine Erfahrung, aber du könntest stattdessen den TaskScheduler verwenden.

Mit diesem kannst du den DVBViewer nach einem Standby/Hibernate ohne Probleme starten.

Posted (edited)

Den Task-Scheduler habe ich bis jetzt ohne Erfolg auf dem Vista System versucht zu mLaufen zu bringen. ich habe irgendwann aufgegeben, da der blöde Rechner nie aufgewacht ist, obwohl die Aufgaben sauber eingetragen waren.

 

s. hier.

 

Ausserdem muss doch der DVBViewer auch geschlossen werden, dass die Aufgaben dann geplant werden - liege ich da richtig?

Edited by topcaser
Posted

Ich schalte DVBViewer erst garnicht aus.

Direkt nach dem aufwachen läuft das Bild weiter(ein paar ruckler in den ersten Sekunden)

Nur nicht bei H264 da gibt es einen treiberfehler ati...dll bluescreen (Vista)

Posted

Hallo ThomasL,

 

wie machst du dann eine geplante Aufnahme? Erweckt der DVBViewer selbst den Rechner wieder?

Posted

Ich würde empfehlen der FB auszutreiben, dass sie Vista in den Standbymodus setzt. Normalerweise reicht es dafür in den Energieeinstellungen für die "Standbytaste" einzustellen, dass nichts passieren soll... und dann eben den Standby im DVBViewer für die Taste anlernen.

 

Ob das aber so reicht, ist dann auch nicht gesagt, da in Vista eine Anwendung den Standbymodus weder Verzögern noch verhindern kann... aber wenn ich das richtig im Kopf hab, macht der DVBViewer, wenn er selber den Standby ausführt, schon ein paar Aufräum arbeiten vorher und die Chance ist dann größer, dass es klappt.

 

Den Taskscheduler kann man auch so einstellen, dass er alle Aufnahmen als Windows Tasks programmiert. Dann müsste man den DVBViewer nur schließen um neue Aufnahmen programmiert zu bekommen, das könnte man notfalls auch per Timer+Windowstask einmal am Tag erledigen lassen.

 

Was ich auch immer mal testen wollte, ist den DVBViewer und den Recording Service, quasi in verschiedenen Instanzen, gleichzeitig laufen zu lassen. Dann kann man zwar den Recording Service auch nicht direkt vom DVBViewer Programmieren (zumindest nicht aus dem OSD raus, für die Fenster gab es glaub ich irgendwann mal einen "hack" von Lars dafür...), hätte aber den Vorteil, dass der Recording Service schön alle Aufnahmen ausführt und der DVBViewer sich da nicht einmischt... ist aber glaub, ich keine Lösung für einen HTPC... achja, wie machst du das eigentlich: wenn eine Aufnahme im Service läuft und du den DVBViewer startest, kommt doch eine Warnung als normales Fenster, oder nicht? Was machst du mit der? Die fand ich immer maximal nervend.

Posted
Normalerweise reicht es dafür in den Energieeinstellungen für die "Standbytaste" einzustellen, dass nichts passieren soll... und dann eben den Standby im DVBViewer für die Taste anlernen.

Das habe ich versucht. Dann passiert wirklich nichts, wenn ich die Ausschalttaste der FB drücke. Aber leider erkennt dann der DVBViewer die Taste auch nicht mehr. Es gibt hier (click) einen Thread, der es geschafft hat, die Taste doch erkennen zu lassen. Leider ist das bei mir wirkungslos. Wenn ich den Energieoptionen "in den Standby schicken" einstelle fuer diese Taste, so erkennt der DVBViewer das Tastaturkürzel "B" beim Anlernen. Ich nehme an, dass dann durch einen Druck auf die Taste, ein Rennen beginnt zwischen DVBViewer schliessen und dem Standby. Meistens gewinnt der DVBViewer. Aber leider sind dann Aufrufe, wie das Starten des Services zu langsam.

 

Ob das aber so reicht, ist dann auch nicht gesagt, da in Vista eine Anwendung den Standbymodus weder Verzögern noch verhindern kann... aber wenn ich das richtig im Kopf hab, macht der DVBViewer, wenn er selber den Standby ausführt, schon ein paar Aufräum arbeiten vorher und die Chance ist dann größer, dass es klappt.

Davon gehe ich aus, dass der DVBViewer aufräumt. Der Menuepunkt Standby hat das ja alles selber in der Hand, ist ja nur Software. Man kann x-beliebige Dinge tun, bevor man als letzten Befehl den echten Standby ausfuehrt.

 

Den Taskscheduler kann man auch so einstellen, dass er alle Aufnahmen als Windows Tasks programmiert. Dann müsste man den DVBViewer nur schließen um neue Aufnahmen programmiert zu bekommen, das könnte man notfalls auch per Timer+Windowstask einmal am Tag erledigen lassen.

 

Ist nicht bequem genug. Ich habe noch eine "close" Taste auf der Fernbedienung. Eine laufende Applikation, die im Vordergrund ist, wird dann geschlossen. Diese Taste lässt sich auch nicht umprogrammieren. Als noch akzeptablem Workaround muss ich halt nun (wenn ich eine Aufnahme geplant habe) zuerst auf close druecken und dann auf die Standby Taste. Na hoffentlich vergess ich das nicht.

 

Was ich auch immer mal testen wollte, ist den DVBViewer und den Recording Service, quasi in verschiedenen Instanzen, gleichzeitig laufen zu lassen. Dann kann man zwar den Recording Service auch nicht direkt vom DVBViewer Programmieren (zumindest nicht aus dem OSD raus, für die Fenster gab es glaub ich irgendwann mal einen "hack" von Lars dafür...), hätte aber den Vorteil, dass der Recording Service schön alle Aufnahmen ausführt und der DVBViewer sich da nicht einmischt... ist aber glaub, ich keine Lösung für einen HTPC...

Das hört sich aber sehr interessant an. wie schaut dieser Hack aus, bzw was macht der genau? Sinnvoll wäre es, wenn der Recording Service immer laufen wuerde. Oder sehe ich da was falsch?

 

achja, wie machst du das eigentlich: wenn eine Aufnahme im Service läuft und du den DVBViewer startest, kommt doch eine Warnung als normales Fenster, oder nicht? Was machst du mit der? Die fand ich immer maximal nervend.

Das ist mir vorhin auch passiert. Der DVBViewer sagt: Kein DVBGerät verfügbar und schaltet dann aber auf den aufgenommenen Sender - so wie es sein muss. Oder habe ich dich da falsch verstanden?

Posted
Das hört sich aber sehr interessant an. wie schaut dieser Hack aus, bzw was macht der genau?

 

Der "Hack" ist irgendwo in einem der zwei Threads zur Recording Service Beta im Beta Forum erklärt... soweit ich mich erinner, konnte man damit im EPG einen Rechtsklick machen und dann hat er das ganze an den Service geschickt, ich glaube über das Webinterface (also quasi den Aufruf der URL, die die Aufnahme dann final speichert ausgeführt). Ich erinner mich aber nur noch recht dunkel daran...

 

Sinnvoll wäre es, wenn der Recording Service immer laufen wuerde. Oder sehe ich da was falsch?

 

Ja, das finde ich auch am sinnvollsten. Mit einer zweiten DVBViewer Instanz in der dann der Recording Service installiert ist, müsste das eigentlich machbar sein. Wichtig ist, dass die DVB Geräte in den Hardware Einstellungen in der gleichen Reihenfolge sind und auch sonst identisch...

 

Das ist mir vorhin auch passiert. Der DVBViewer sagt: Kein DVBGerät verfügbar und schaltet dann aber auf den aufgenommenen Sender - so wie es sein muss. Oder habe ich dich da falsch verstanden?

 

Ein DVB Gerät kann nur immer von einer Anwendung gleichzeitig genutzt werden. Deshalb verständigen sich die DVB-Anwendungen da ja alle untereinander (also DVBViewer, Recording Service, DVBServer, DVBViewer GE, Transedit...). Also blokiert der Service, wenn er aufnimmt, das Gerät und es kann nicht mehr vom gleichen Gerät geguckt werden. Was der DVBViewer da mittlerweile macht, weiß ich nicht mehr genau... muss ich nochmal ausprobieren. :blink:

Posted (edited)
Mit einer zweiten DVBViewer Instanz in der dann der Recording Service installiert ist, müsste das eigentlich machbar sein.

Moses, das wäre ja die Lösung des Problems schlechthin. Lass mich das nochmal mit meinen Worten zusammenfassen:

1. DVBViewer installieren

2. DVBViewer-ProgrammVerzeichnis kopieren in DVBViewer2 Verzeichnis

3. In DVBViewer2 Verzeichnis installiere ich den Rec.service, DVBViewer1 Verzeichnis nutze ich als "Arbeits"-Viewer

4. Sobald ich eine Aufgabe plane im DVBViewer1-Verzeichnis, wird diese in den Rec.service übernommen und der Service versucht, zur angegebenen Zeit aufzunehmen (belegt DVBViewer1 die HW, so kann der Rec.service natürlich nicht aufnehmen, das ist klar)

 

Meinst du das so?

Edited by topcaser
Posted

Ja, so meine ich das. Dazu muss man allerding im 2. Verzeichniss noch die usermode.ini editieren und da einen anderen "root" eintragen (z.B. CMUV\DVBViewer2).

 

Das Problem an der Sache ist 4. Die geplanten Aufnahmen werden eben nicht automatisch von DVBViewer1 zum Recordingservice transportiert... also muss man direkt den Recording Service für die Aufnahmen planen, z.B. über das Webinterface (oder über den Hack von dem ich geredet hab, der ist aber auch nicht automatisch).

Ich hab auch schonmal angedacht die timer.xml zu synchronisieren. Problem dabei: man müsste den Service anhalten um ihm so neue Timer unterzuschieben. Geht nicht während aufnahmen... außerdem muss man die timer.xml vom DVBViewer immer schön leer machen, damit der nicht plötzlich was aufnimmt.

 

Man könnte das ganze in einer externen Anwendung realisieren... eine Anwendung die über das COM Interface guckt, was DVBViewer1 so an Aufnahmen geplant hat. Die deaktiviert es im DVBViewer1 (damit der nicht auf die Idee kommt aufzunehmen) und schiebt sie dem Recording Service z.B. über das Webinterface zu. Hm... könnte man so mal ausprobieren. :blink:

Die Anwenung könnte sogar bei DVBViewer1 veranlassen, dass er das DVB Gerät freigibt, wenn eine Aufnahme ansteht (oder zumindest eine entsprechende Warnung einblenden).

Posted
Man könnte das ganze in einer externen Anwendung realisieren... eine Anwendung die über das COM Interface guckt, was DVBViewer1 so an Aufnahmen geplant hat. Die deaktiviert es im DVBViewer1 (damit der nicht auf die Idee kommt aufzunehmen) und schiebt sie dem Recording Service z.B. über das Webinterface zu. Hm... könnte man so mal ausprobieren. :blink:

Die Anwenung könnte sogar bei DVBViewer1 veranlassen, dass er das DVB Gerät freigibt, wenn eine Aufnahme ansteht (oder zumindest eine entsprechende Warnung einblenden).

Das hört sich gut an. Könnte dies ein Plugin übernehmen?

Posted

Moses, schreibst du en solches Plugin, oder sollen wir es in die Vorschlaege aufnehmen? Ich wollte eigentlich auch mal einsteigen, dann wirds aber dauern...

Posted

Eigentlich wollte ich mich heute Abend ran gesetzt haben... aber mein Windows Laptop, auf dem ich das angefangen hätte, hat leider die Arbeit verweigert und wollte gerne repariert werden... ich versuche aber dafür Zeit zu finden... zumindest für einen Test.

Posted

No worries,

 

kommt sicherlich auf den ein oder anderen Tag nicht drauf an. Wäre aber, wenn du mal Fleisch hast, am Source code interessiert. In welcher Sprache schreibst du das Plugin?

Posted
In welcher Sprache schreibst du das Plugin?

 

Gute Frage. :blink:

Posted
Ich würde Ook! oder Befunge vorschlagen da ist der Source Code besonders leicht zu lesen :blink:

 

Nein, ich tue so als ob ich C++ oder sowas nehmen würde, und in Wirklichkeit versteckt sich der wahre Code in den Whitespaces :)

Posted

So.. ich habe es tatsächlich geschafft meinen Worten erste Taten folgen zu lassen... :blush:

 

Im Anhang sind zwei Zips, die eine RecordingsSynchronizerBinary.zip enthält nur die drei Dateien die notwendig sind um das ganze laufen zu lassen. In der anderen RecordingsSynchronizerSrc.zip sind zusätzlich noch die Sourcen mit drinnen (einfach das komplette Visual Studio 2008 Projekt).

 

Zum Programm selber:

0. Ganz wichtig: Die Kanallisten vom Service und vom DVBViewer müssen identisch sein. Es wird zu 100% mit Kanalnummern gearbeitet!! Wenn da was nicht übereinstimmt, wird vom falschen Sender aufgenommen!!

1. Es ist nicht schön, soll es auch nicht sein. ;)

2. Ich hab mich für C# als Sprache entschieden, da über das .NET Framework und C# die Nutzung der COM Schnittstelle schön einfach ist.

3. Das ganze ist eine "externe" Anwendung, die zusätzlich zum DVBViewer laufen muss, ja, noch eine... ist ähnlich wie das ImonPlugin oder EPGPlus. Zu einem späteren Zeitpunkt, könnte man zusätzlich noch ein Plugin für den DVBViewer bauen, dass die *.exe startet, so wie EPGPlus das macht. Aber ob das notwendig ist, weiß ich nicht...

4. Das Icon ist ganz dreist vom Recordingservice geklaut (aus dem Webdateien). Ich hoffe, dass geht ok so, ansonsten wäre es auch schön, wenn sich einer austoben möchte und ein schönes Icon gestalten mag... ich bin bei sowas leider vollständig unbegabt und viel zu ungeduldig. B)

5. Der Code ist nicht unbedingt sehr schön, aber funktional...

6. Alle Ausgaben und Bedienelemente sind auf englisch... ob's eine Lokalisierung geben wird, weiß ich nicht... ich vermute aber ganz stark, dass nicht.

7. Die Listbox "Debug output" ist nur in dieser sehr frühen Version da und gibt einige Meldungen zum Status usw. aus ;)

 

Was tut das Programm?

Es verbindet sich über die COM Schnittstelle mit dem DVBViewer. Sobald "Active" angehakt wurde wird alle 10 Sekunden die Liste der Timer vom DVBViewer geholt. Alle Timer, die nicht deaktiviert sind werden über das Webinterface an den RecordingService geschickt und dann deaktiviert. Dass die Timer deaktiviert werden hat zwei Gründe:

1. Der DVBViewer nimmt nicht auf

2. Ich brauch mich nicht drum zu kümmern, welche Timer der Service schon hat und welche nicht... => es wird sich auch nicht gekümmert! Wenn man einen Eintrag einfach wieder aktiviert, wird er das nächste Mal wieder an den Service geschickt.

 

Das war's eigentlich auch schon... Alternativ zum deaktivieren, könnte man die Einträge auch löschen. Aber so hat man wenigstens einen groben Überblick, was man aufnehmen will. Der Nachteil ist nämlich: Konflikte werden nirgendwo mehr angezeigt oder sonstwas! Der Service zeigt sie leider auch nicht in seinem Webinterface an... ein mögliches zukünftiges Feature könnte sein, dass der Synchronizer da eine Warnung gibt, wenn er einen Konflikt vermutet. Allerdings müsste er dazu wissen, wie viele Geräte dem RecordingService zur Verfügung stehen... da muss ich mir was überlegen...

 

Eine andere Idee war, dass ich die Aufnahmen, die der RecordingService hat, aber der DVBViewer nicht, vom RecordingService hole und im DVBViewer als (deaktivierte) Timer eintrage. Das ist sinnvoll, wenn der Service als "zentrale Aufnahmeeinheit" genutzt wird und z.B. auch über das Webinterface oder mehrere DVBViewer von verschiedenen Personen programmiert wird. So hätte dann jeder DVBViewer die gleiche Datenbasis, wie der Service und man hätte einen groben Überblick, was programmiert ist, und was nicht. Die Funktion ist vorbeireitet und auch schon grob implementiert, aber noch ungetestet und auskommentiert... das wird ggf. in einer späteren Version kommen, falls das sinnvoll ist.

 

ggf. könnte eine Ausnahme für gewisse Timer auch sinnvoll sein (also sowas wie nachts EPG suchen und Neustarten oder sowas). Gibt's im Moment auch noch nicht. (Ich bin für Ansätze dankbar)

 

Achja: das Programm speichert eine Konfigurationsdatei in C:\Dokumente und Einstellungen\NUTERNAME\Lokale Einstellungen\AnwendungsDaten\MDev bzw in Vista C:\Benutzer\NUTERNAME\AppData\Local\MDev an. Dort wird auch das Passwort im Klartext gespeichert (!!) (macht der Service aber ähnlich.. ;)).

 

Der Rest der Konfiguration sollte eigentlich selbst erklärend sein... einfach Benutzername und Passwort für das Webinterface des RecordingService eintippern und die URL (nur die URL zum Webinterface!) (am besten mit / am Ende, ohne sollte auch gehen, ist aber nicht getestet, ja, ich war faul ;)). Dann "Active" anhaken (ähnlich wie beim HTTPServer) und dann geht's los. Wenn man will noch Start minimized und activate on start aktivieren. Dann kann man z.B. eine Verknüpfung im Autostart erstellen und man sollte nix mehr von dem Programm merken.

 

Es ist möglich, dass ich was vergessen hab... falls ja: fragen.

Achja, eine Readme gibt's auch noch nicht. Sowas übernimmt im Moment dieser Post hier.. ;)

 

Vielleicht kann man ja schon was mit anfangen, aber ich übernehm keine Garantien, dass es funktioniert => ausprobieren, bevor man sich drauf verlässt! Am besten (mindestens) die Timers.xml des DVBViewer sichern. Viel Spaß.

Posted

Hallo Moses,

 

das hört sich doch schonmal sehr gut an.

Ich werde es diese Woche mal näher unter die Lupe nehmen. Doch schon mal ein paar Fragen vorneweg:

 

1. (Die wichtigste): Wenn mein Rechner aufwacht, so startet durch den Hibernation Trigger der DVBViewer sofort. Wenn jetzt der RecordingService aufnehmen möchte, erhält er überhaupt ein DVBGerät?

 

2. Wenn ich eine geplante Aufnahme verändern oder löschen möchte, so muss ich dies ja auch dem Service unterjubeln. Wie mache ich das mit deinem Flow?

 

Und schonmal danke fuer den Source Code. Jetzt kann ich auch mal wieder mein Studio 2005 rauskramen:-)

Posted

1. Hm.. wenn der DVBViewer zu schnell das Gerät besetzt, bekommt der Service das natürlich nicht... da wäre es günstiger den DVBViewer mit Parameter -c zu starten (bzw. wie ich das machen: einfach während dem Standby an lassen und nur mit "Stop Graph" das DVB Gerät frei zu geben, geht aber nicht unbedingt auf jedem System).

 

2. Das geht im Moment nur mit dem Service selber (also über "den anderen" DVBViewer oder besser das Webinterface).

Das ist ein Feature, was ich noch ein bißchen planen muss... im Moment stell ich mir das so vor, dass man einfach im DVBViewer den Timer editiert, mein Tool das erkennt und dann am Service auch die Änderung vor nimmt. Da muss ich aber nochmal drüber nachdenken (irgendwie muss ja auch erkannt werden, dass es den Timer schon gibt und welcher das ist... also zu umfangreiche Änderungen darf es dann eh nicht geben... oder ich lösche den alten Timer und stell einen neuen Timer ein...)

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...