BlackScreen Posted November 25, 2019 Share Posted November 25, 2019 Hallo zusammen, ich arbeite seit langer Zeit mit dem Media Server. Da ich seit kurzem auch ein NAS habe, wollte ich die fertigen Aufnahmen nach Abschluss dorthin kopieren. Aktuell nutze ich dafür ein Batch-Skript, das mittels Robocopy das File kopiert - als Aktion im Timer nach Abschluss. Danach geht der PC in den Ruhemodus. Leider läuft dieser Kopiervorgang nicht komplett durch, bevor der PC in den Ruhemodus geht. Ich stelle mir nun die Frage wie man dies verbessern kann. Daher bin ich auch auf die externen Tasks gestoßen, die man mittels Timer einstellen kann. Meine Aufgabe zum Kopieren, die ich nach der Aufnahme abrufen kann, wird dort aber nicht angezeigt. Geht das nicht oder hab ich was falsch gemacht? Oder gibt es grundsätzlich einen besseren Weg für meine Bedürfnisse? Vielen Dank für eure Antwort und für die tolle Software, die mir seit Jahren gute Dienste leistet! Viele Grüße Florian Quote Link to comment
Griga Posted November 25, 2019 Share Posted November 25, 2019 vor 3 Stunden schrieb BlackScreen: Meine Aufgabe zum Kopieren, die ich nach der Aufnahme abrufen kann, wird dort aber nicht angezeigt. Der Media Server unterscheidet zwischen Nach-Aufnahme- und unabhängigen externen Aufgaben (Tasks). Erstere enthalten Platzhalter wie {PATH}, die sich auf eine Aufnahme beziehen. Deshalb können sie nur im Zusammenhang mit einer Aufnahme ausgeführt werden, die den {PATH} liefert. Also entweder direkt nach einer Aufnahme, oder nachträglich manuell - siehe Aufnahme-Seite des Webinterface -> Klick auf das Stiftsymbol, das bei Mouse Over erscheint -> Aufgabe auswählen -> Aufgabe anwenden. Unabhängige externe Aufgaben ohne Platzhalter können dagegen mittels Timer ohne Bezug auf eine Aufnahme ausgeführt werden. Das Webinterface bietet nur die Aufgaben zur Auswhl an, die in dem jeweiligen Kontext ausführbar sind. vor 3 Stunden schrieb BlackScreen: Leider läuft dieser Kopiervorgang nicht komplett durch, bevor der PC in den Ruhemodus geht. Wie lange dauert der Kopiervorgang denn? Ich glaube, der DMS sollte ein Herunterfahren aufgrund fehlender Benutzeraktivität verhindern, solange eine Aufnahme und die anschließende Aufgabe läuft, aber ich muss den Code dazu noch mal in Ruhe durchgehen. Hilfreich wäre ein hier angehängtes gezipptes svcdebug.log (siehe Konfigurationsordner), das einen solchen Vorgang mit vorzeitigem Ruhe(zu)stand enthält. Quote Link to comment
al3344fa Posted November 25, 2019 Share Posted November 25, 2019 Warum nicht einfach direkt auf das NAS aufnehmen? Ich nutze an meiner FritzBox 7590 die NAS-Funktionalität und das funktioniert hervorragend. 1 Quote Link to comment
BlackScreen Posted November 26, 2019 Author Share Posted November 26, 2019 (edited) vor 15 Stunden schrieb Griga: Wie lange dauert der Kopiervorgang denn? Ich glaube, der DMS sollte ein Herunterfahren aufgrund fehlender Benutzeraktivität verhindern, solange eine Aufnahme und die anschließende Aufgabe läuft, aber ich muss den Code dazu noch mal in Ruhe durchgehen. Hilfreich wäre ein hier angehängtes gezipptes svcdebug.log (siehe Konfigurationsordner), das einen solchen Vorgang mit vorzeitigem Ruhe(zu)stand enthält. Also in meinem Kopier-Logger steht: Zitat Pi-Upload gestartet am 26.11.2019 um 00:55:00 Uhr ROBOCOPY "D:\Recordings\ " "\\PCNAME\public\Recordings " "2019-11-25_23-10-00_VOX HD_Survivor - Folge 11 Psychologische Kriegsführung.ts.log" /XO /R:3 /W:10 /MT:3 /TEE ROBOCOPY "D:\Recordings\ " "\\PCNAME\public\Recordings " "2019-11-25_23-10-00_VOX HD_Survivor - Folge 11 Psychologische Kriegsführung.ts.txt" /XO /R:3 /W:10 /MT:3 /TEE ROBOCOPY "D:\Recordings\ " "\\PCNAME\public\Recordings " "2019-11-25_23-10-00_VOX HD_Survivor - Folge 11 Psychologische Kriegsführung.ts" /XO /R:3 /W:10 /MT:3 /TEE Pi-Upload beendet am 26.11.2019 um 06:00:14 Uhr Das heißt, dass der Kopiervorgang erst beendet wurde, nachdem um 6 Uhr der PC wieder aufgewacht ist, um das EPG-Update zu machen. Aus dem svcdebug.log: Zitat 26.11.19 00:55:00.341 TRecording ($024591E0) D:\Recordings\2019-11-25_23-10-00_VOX HD_Survivor - Folge 11 Psychologische Kriegsführung.ts Discontinuities: 0 - Total size: 5,94 GB - Device: Digital Devices DVB-S2 Tuner 1 (1) 26.11.19 00:55:00.360 TSMTPMailer Execute Recording finished: Survivor - Folge 11: "Psychologische Kriegsführung" 26.11.19 00:55:00.361 TRecording Release Digital Devices DVB-S2 Tuner 1 (1) 26.11.19 00:55:00.361 TRecording Free Digital Devices DVB-S2 Tuner 1 (1) 26.11.19 00:55:00.640 TRecording Freed Digital Devices DVB-S2 Tuner 1 (1) 26.11.19 00:55:00.640 TRecording hamDeleted Digital Devices DVB-S2 Tuner 1 (1) 26.11.19 00:55:00.640 TProcessTimer Process Params "D:\Recordings\2019-11-25_23-10-00_VOX HD_Survivor - Folge 11 Psychologische Kriegsführung.ts" 26.11.19 00:55:00.640 TWinApp Execute C:\Program Files (x86)\DVBViewer\User\Pi-Copy.bat 26.11.19 00:55:00.640 TWinApp Working Directory C:\Program Files (x86)\DVBViewer\User\ 26.11.19 00:55:00.656 TProcessTimer StartRecord Copy Recording to Pi started 26.11.19 00:55:00.687 TSMTPMailer SmtpRequestDone 0 - 0 26.11.19 00:55:00.703 TSMTPMailer SmtpRequestDone 10 - 0 26.11.19 00:55:00.781 TSMTPMailer SmtpRequestDone 12 - 0 26.11.19 00:55:00.781 TSMTPMailer SmtpRequestDone 10 - 0 26.11.19 00:55:02.376 TSMTPMailer SmtpRequestDone 11 - 0 26.11.19 00:55:02.485 TSMTPMailer SmtpRequestDone 9 - 0 26.11.19 00:55:02.516 TSMTPMailer SmtpRequestDone 6 - 0 26.11.19 00:56:00.314 ReleaseStandbyblock TVCR 26.11.19 00:56:00.314 TServiceMain ReleaseReference TVCR: 0 26.11.19 00:56:00.314 SetStandbyBlock EvaluateShutdown 26.11.19 00:56:30.799 TServiceMain DoShutDown Enter 26.11.19 00:56:30.799 TServiceMain Setting next recording: 26.11.2019 05:52:00 26.11.19 00:56:30.799 ThdProc Enter 26.11.19 00:56:30.799 TUPnPAnnounce Stopped 26.11.19 00:56:30.799 TUPnPDevice Stopped 26.11.19 00:56:30.799 TRTSPWebserver Disconnected 26.11.19 00:56:30.925 TSynHttpServer ServerLoop terminated 26.11.19 00:56:30.940 TSrvDataModule Freed 26.11.19 00:56:30.987 ReleaseStandbyblock DoShutDown 26.11.19 00:56:30.987 TServiceMain DoShutDown sdHilbernate Der Kopiervorgang dauert jedenfalls definitiv länger als 1 Min. und 30 Sekunden. Capturen direkt auf das NAS habe ich überlegt, aber aufgrund der Fehleranfälligkeit (Netzwerk-Ausfall während der Aufnahme) habe ich davon abgesehen. Alternativ könnte ich mir vorstellen lokal und auf das NAS zu capturen, aber das geht ja nicht, soweit ich weiß. Vielen Dank jedenfalls für die Hilfe! Edited November 26, 2019 by BlackScreen Quote Link to comment
Griga Posted November 26, 2019 Share Posted November 26, 2019 vor 30 Minuten schrieb BlackScreen: Der Kopiervorgang dauert jedenfalls definitiv länger als 1 Min. und 30 Sekunden. Der Ablauf deckt sich mit den Erkenntnissen, die ich inzwischen im Code gewonnen habe. Da für Nach-Aufnahme-Aufgaben keine Dauer feststeht, nimmt der DMS pauschal eine Minute an. Das wäre z.B. auch für eine Transkodierung nach MP4 oder MKV definitiv zu wenig. Bis zum Herunterfahren kommen dann noch 30 Sekunden Vorwarnzeit hinzu. Es kann sein, dass diese Beschränkung auf eine Minute nur für Tests eingefügt und dann vergessen wurde - sieht mir etwas nach einem Fehler aus. Ich könnte dir eine Testversion zur Verfügung stellen, bei der die Beschränkung nicht besteht. Wenn man die Aufgabe laufen lässt, bis der gestartete Prozess terminiert, kann es jedoch ein anderes Problem geben: Wenn der Prozess sich nicht von selbst beendet oder hängenbleibt, läuft die Aufgabe endlos. Eine Maximaldauer sollte es also geben. Aber welche? Bei externen Task-Timern kann man eine Endzeit vorgeben. Diese Möglichkeit besteht bei Nach-Aufnahme-Aufgaben nicht. Ein möglicher Ort für ein Eingabefeld "maximale Ausführungsdauer" wären die DMS-Optionen -> Aufgaben -> Aufgaben-Editor, der nach "Neu" oder "Bearbeiten" erscheint. Quote Link to comment
BlackScreen Posted November 26, 2019 Author Share Posted November 26, 2019 vor 7 Stunden schrieb Griga: Der Ablauf deckt sich mit den Erkenntnissen, die ich inzwischen im Code gewonnen habe. Da für Nach-Aufnahme-Aufgaben keine Dauer feststeht, nimmt der DMS pauschal eine Minute an. Das wäre z.B. auch für eine Transkodierung nach MP4 oder MKV definitiv zu wenig. Bis zum Herunterfahren kommen dann noch 30 Sekunden Vorwarnzeit hinzu. Es kann sein, dass diese Beschränkung auf eine Minute nur für Tests eingefügt und dann vergessen wurde - sieht mir etwas nach einem Fehler aus. Ich könnte dir eine Testversion zur Verfügung stellen, bei der die Beschränkung nicht besteht. Wenn man die Aufgabe laufen lässt, bis der gestartete Prozess terminiert, kann es jedoch ein anderes Problem geben: Wenn der Prozess sich nicht von selbst beendet oder hängenbleibt, läuft die Aufgabe endlos. Eine Maximaldauer sollte es also geben. Aber welche? Bei externen Task-Timern kann man eine Endzeit vorgeben. Diese Möglichkeit besteht bei Nach-Aufnahme-Aufgaben nicht. Ein möglicher Ort für ein Eingabefeld "maximale Ausführungsdauer" wären die DMS-Optionen -> Aufgaben -> Aufgaben-Editor, der nach "Neu" oder "Bearbeiten" erscheint. Ich wäre gerne bereit mit einer Testversion zu testen, ob das File vollständig kopiert wird. Eine Maximaldauer wäre sinnvoll, so etwas hatte ich mir auch schon ausgemalt. Der von dir beschriebene Ort wäre eigentlich sinnvoll, dort wäre es an der richtigen Stelle. Quote Link to comment
Griga Posted November 27, 2019 Share Posted November 27, 2019 vor 13 Stunden schrieb BlackScreen: Ich wäre gerne bereit mit einer Testversion zu testen, ob das File vollständig kopiert wird. Siehe PM. In der Testversion habe ich die maximale Ausführungsdauer des Timers erst mal pauschal auf 24 Stunden gesetzt. Das sollte reichen. Die Laufzeit der eigentlichen Aufgabe ist unabhängig von der Laufzeit des dazugehörigen Timers, d.h. wenn der Timer abläuft, wird der gestartete Prozess nicht terminiert, außer natürlich wenn der Timer wie bei dir mit Herunterfahren als abschließender Aktion endet. Oder wenn in den Windows-Energieoptionen ein Herunterfahren nach einer bestimmten Zeit ohne Benutzerinteraktion festgelegt ist (Idle Timeout). Das verhindert der DMS nur, solange ein Timer läuft. Andersherum ist es jedoch so, dass der Prozess-Timer unabhängig von seiner vorgesehenen Dauer vorzeitig endet, wenn der von ihm gestartete Prozess terminiert. Mit den externen Aufgaben ist das so eine Sache, da es vier mögliche Fälle gibt: Eine Aufgabe wird manuell im Webinterface -> Aufgaben gestartet (was bei Nach-Aufnahme-Aufgaben wegen dem fehlenden Bezug auf eine Aufnahme nicht möglich ist). Dann ist sie überhaupt nicht mit einem Timer verbunden, d.h. in dem Kontext ergibt eine maximale Dauer keinen Sinn. Eine Aufgabe wird mittels externem Task Timer gestartet (nicht möglich für Nach-Aufnahme-Aufgaben). Da man bei der Programmierung des Timers eine Endzeit festlegen kann, ist eine maximale Dauer überflüssig. Eine Nach-Aufnahme-Aufgabe wird manuell über das Webinterface -> Aufnahmen -> Stiftsymbol gestartet. Intern wird dafür ein Timer angelegt, ohne dass man jedoch die Möglichkeit hat, ein abschließendes Herunterfahren festzulegen. Deshalb spielt eine maximale Dauer nur im Zusammenhang mit dem Idle Timeout eine Rolle. Eine Nach-Aufnahme-Aufgabe wird automatisch direkt nach einer Aufnahme gestartet. Hier ist eine maximale Dauer insbesondere sinnvoll, wenn ein Herunterfahren als abschließende Timeraktion festgelegt ist. Soweit erst mal die Analyse der gesamten Angelegenheit... BTW: Bitte nicht jedes mal meinen ganzen Post zitieren. Das bläht das Thema unnötig auf. Es reicht, den Teil zu zitieren, auf den sich die Antwort bezieht. Dazu braucht man ihn nur markieren und auf "Auswahl zitieren" zu klicken. Quote Link to comment
BlackScreen Posted November 27, 2019 Author Share Posted November 27, 2019 (edited) Also heute morgen hat es bei einer Test-Aufnahme wunderbar funktioniert... Spoiler 27.11.19 11:30:00.467 TRecording ($02459820) D:\Recordings\2019-11-27_08-58-32_Das Erste HD_Bundestag live - Schlagabtausch um den Haushalt.ts Discontinuities: 0 - Total size: 8,67 GB - Device: Digital Devices DVB-S2 Tuner 1 (1) 27.11.19 11:30:00.501 TSMTPMailer Execute Recording finished: Bundestag live - Schlagabtausch um den Haushalt 27.11.19 11:30:00.502 TRecording Release Digital Devices DVB-S2 Tuner 1 (1) 27.11.19 11:30:00.502 TRecording Free Digital Devices DVB-S2 Tuner 1 (1) 27.11.19 11:30:00.784 TRecording Freed Digital Devices DVB-S2 Tuner 1 (1) 27.11.19 11:30:00.784 TRecording hamDeleted Digital Devices DVB-S2 Tuner 1 (1) 27.11.19 11:30:00.784 TProcessTimer Process Params "D:\Recordings\2019-11-27_08-58-32_Das Erste HD_Bundestag live - Schlagabtausch um den Haushalt.ts" 27.11.19 11:30:00.784 TWinApp Execute C:\Program Files (x86)\DVBViewer\User\Pi-Copy.bat 27.11.19 11:30:00.784 TWinApp Working Directory C:\Program Files (x86)\DVBViewer\User\ 27.11.19 11:30:00.800 TProcessTimer StartRecord Copy Recording to Pi started 27.11.19 11:30:00.831 TSMTPMailer SmtpRequestDone 0 - 0 27.11.19 11:30:00.846 TSMTPMailer SmtpRequestDone 10 - 0 27.11.19 11:30:01.049 TSMTPMailer SmtpRequestDone 12 - 0 27.11.19 11:30:01.065 TSMTPMailer SmtpRequestDone 10 - 0 27.11.19 11:30:01.487 TSMTPMailer SmtpRequestDone 11 - 0 27.11.19 11:30:01.596 TSMTPMailer SmtpRequestDone 9 - 0 27.11.19 11:30:01.596 TSMTPMailer SmtpRequestDone 6 - 0 27.11.19 11:37:44.599 TServiceMain Time changed 27.11.19 11:43:55.122 TProcessTimer NeedsEnding Copy Recording to Pi finished 27.11.19 11:43:55.122 ReleaseStandbyblock TVCR 27.11.19 11:43:55.122 TServiceMain ReleaseReference TVCR: 0 27.11.19 11:43:55.122 SetStandbyBlock EvaluateShutdown 27.11.19 11:44:25.624 TServiceMain DoShutDown Enter 27.11.19 11:44:25.624 TServiceMain Setting next recording: 27.11.2019 20:07:00 27.11.19 11:44:25.624 ThdProc Enter 27.11.19 11:44:25.624 TUPnPAnnounce Stopped 27.11.19 11:44:25.624 TUPnPDevice Stopped 27.11.19 11:44:25.624 TRTSPWebserver Disconnected 27.11.19 11:44:25.734 TSynHttpServer ServerLoop terminated 27.11.19 11:44:25.749 TSrvDataModule Freed 27.11.19 11:44:25.796 ReleaseStandbyblock DoShutDown 27.11.19 11:44:25.796 TServiceMain DoShutDown sdHilbernate Edited November 28, 2019 by Griga Spoiler-Tags ergänzt Quote Link to comment
BlackScreen Posted November 28, 2019 Author Share Posted November 28, 2019 Auch gestern Abend hat alles wunderbar funktioniert. Externe Skripte habe ich nun auch erfolgreich am Laufen. Vielen Dank für die Hilfe, das hilft mir schon sehr. Vielleicht kann das Ganze dann irgendwie in die offizielle nächste Version rein kommen. Quote Link to comment
Griga Posted November 28, 2019 Share Posted November 28, 2019 So weit, so gut... braucht man wirklich noch eine Konfigurationsmöglichkeit für die Endzeit/Dauer eines mit einer Nach-Aufnahme-Aufgabe verbundenen Timers? Programmtechnisch ist das kein Problem, aber wie bringt man das verständlich im UI rüber? Meine obige Analyse lässt sich so zusammenfassen: Ein mit einer Nach-Aufnahme-Aufgabe verbundener Timer dient allein dem Zweck, während seiner Laufzeit ein Herunterfahren des PC aus folgenden Anlässen zu verhindern: eine nach der Aufnahme vorgesehene Aktionen. Ausbleibende Benutzeraktivität (Windows Idle Timeout) manuelles Auslösen von Energie sparen (der PC begibt sich dann in den Abwesenheitsmodus, sofern zugelassen) Die Startzeit solcher Timer ist immer "jetzt", weil die Aufgabe durch das Aufnahmeende oder eine Benutzeraktion gestartet wird. Die Laufzeit des Timers endet, wenn die Endzeit erreicht ist (was die Ausführung der Aufgabe jedoch nicht beendet!) oder der gestartete Prozess terminiert, d.h. aus dem Task Manager verschwindet. Wäre sicher, dass der Prozess immer nach der Abarbeitung der Aufgabe terminiert, würde eine pauschale Timerlaufzeit von 24 Stunden reichen. Doch manchmal bleiben Prozesse hängen. Vielleicht, weil sie auf eine Benutzereingabe warten. Wenn zum Beispiel FFmpeg bei einer Transkodierung eine Datei erzeugen soll, die bereits existiert, fragt das Programm nach, ob es sie überschreiben soll. Da der Prozess üblicherweise mit dem Media Server zusammen im Systemkonto läuft, ist das ebenso unsichtbar wie unbedienbar. Diese spezielle Falle kann zwar nicht mehr auftreten, da der DMS bei solchen FFmpeg-Prozessen vorsorglich einen Parameter -n hinzufügt (mit der Bedeutung: Datei nicht überschreiben, sofort beenden). Aber es sind genug andere Fälle denkbar. Und dann wünscht man sich vielleicht, dass der PC nach einer Stunde auf jeden Fall runterfährt, auch wenn die Aufgabe noch nicht abgearbeitet ist. Wenn ich jedoch im Aufgaben-Editor ein Eingabefeld mit "Maximale Dauer" oder "Maximale Laufzeit" beschrifte, wird das jeder auf die Aufgabe beziehen, nicht auf den zugeordneten Timer. Wie vermittelt man, was da wirklich passiert? Einen Roman schreiben wie hier ist im UI nicht möglich. BTW: Der mit einer Nach-Aufnahme-Aufgabe verbundene Timer erscheint auf der Timerseite des Webinterface, wenn man sie neu lädt, und lässt sich sogar über das Stiftsymbol ändern, während er noch läuft. Man kann ihm nachträglich eine andere Endzeit oder abschließende Aktion verpassen. Unschön ist jedoch, dass die zugeordnete Aufgabe in dem Dialog nicht angezeigt wird, weil dort eigentlich nur von Aufnahmen unabhängige externe Aufgaben erscheinen sollen. Zwar bleibt das bei "Speichern" ohne Auswirkungen, aber ich habe es gerade trotzdem korrigiert. Quote Link to comment
waldi801 Posted November 28, 2019 Share Posted November 28, 2019 Nur mal eine Idee, wie wäre es mit einem Haken zum aktivieren der Funktion und wenn das gemacht wird ein Popup oder so mit dem Hinweis z.b. zu diesem Thread hier im Forum, wo man dann die Funktion genauer nachlesen kann. Quote Link to comment
BlackScreen Posted November 28, 2019 Author Share Posted November 28, 2019 vor 5 Stunden schrieb Griga: So weit, so gut... braucht man wirklich noch eine Konfigurationsmöglichkeit für die Endzeit/Dauer eines mit einer Nach-Aufnahme-Aufgabe verbundenen Timers? Programmtechnisch ist das kein Problem, aber wie bringt man das verständlich im UI rüber? Ich fände aus Sicherheitsgründen eine maximale Dauer sinnvoll. Wie wäre es mit einer Beschriftung in Form von "Maximale Laufzeit des Timers"? Ansonsten vielleicht mit Hinweis auf deine Erklärung hier im Thread oder im Wiki? 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.