Jump to content
BlackScreen

Aufnahmen nach Abschluss auf NAS kopieren / Externe Tasks?

Recommended Posts

BlackScreen

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

Share this post


Link to post
Griga
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.

 

Share this post


Link to post
al3344fa

Warum nicht einfach direkt auf das NAS aufnehmen?

Ich nutze an meiner FritzBox 7590 die NAS-Funktionalität und das funktioniert hervorragend.

  • Like 1

Share this post


Link to post
BlackScreen
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 by BlackScreen

Share this post


Link to post
Griga
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.

 

Share this post


Link to post
BlackScreen
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.

Share this post


Link to post
Griga
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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

 

Share this post


Link to post
BlackScreen

 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 by Griga
Spoiler-Tags ergänzt

Share this post


Link to post
BlackScreen

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

Share this post


Link to post
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?

 

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.

 

Share this post


Link to post
waldi801

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.

Share this post


Link to post
BlackScreen
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?

Share this post


Link to post

Join the conversation

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

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