DetlefM Posted April 20 Share Posted April 20 Meine Aufgabenstellung: Ich möchte zu unregelmäßigen Abständen die im Aufnahmefolder aufgelaufenen Aufnahmen separates Verzeichnis verschieben. Dort werden sie dann weiterverarbeitet. Also in mp4 umgewandelt und bei Serien mit Season und Folge versehen usw. Das Problem ist zu erkennen welche Aufnahmen gerade erfolgen, welche Dateien ich nicht verschieben darf. Über den Status2 erkenne ich ob Aufnahmen laufen. Es wäre also bei 0 ohne Probleme möglich dann alle Dateien zu verschieben (mal von den Sekunden abgesehen die zwischen meiner Anfrage mit status2, dem Erfassen aller Dateinamen und dem Verschiebevorgang liegen). Aber wenn Aufnahmen laufen, dann habe ich aktuell keinen API-Aufruf gefunden, der mir die gerade laufenden Aufnehmen nebst Dateinamen liefert. Die einzige Möglichkeit, die mir derzeit eingefallen ist, ist das Erstellungs- und das Geänderattribut der *.txt Datei zu vergleichen. Wenn beide Werte gleich sind, dann läuft die Aufnahme noch, weil nach meiner Beobachtung beim Start der Aufnahme die *.txt Datei erzeugt wird und beide Fileattribute gleich sind. Wird die Aufnahme beendet dann wird (warum auch immer) diese Datei erneut beschrieben und das ändert das entsprechende Attribut aber das Erstellungattribut bleibt gleich. Die Attribute der *.ts Datei kann ich nicht nehmen, weil sich die Zeit für "Geändert" mit Zeitverzögerung verändern. Langer Rede kurzer Sinn: 1. Denke ich richtig und 2. Gibt es einen besseren Weg Quote Link to comment
Griga Posted April 21 Share Posted April 21 vor 12 Stunden schrieb DetlefM: Aber wenn Aufnahmen laufen, dann habe ich aktuell keinen API-Aufruf gefunden, der mir die gerade laufenden Aufnehmen nebst Dateinamen liefert. api/timerlist.html?reconly=1&utf8=1 https://www.dvbviewer.com/griga/changelog_dms_api.html#__RefHeading__60954_150729339 Mit dem utf8-Parameter erhälst du Unicode-Output. Aber ergibt sich die Sache nicht von selbst? Laufende Aufnahmen lassen sich nicht verschieben. Da ist Windows vor. Du könntest auch versuchen, die Datei probeweise auf eine Weise zu öffnen, die nicht zulässig ist, solange die Aufnahme läuft. Der Media Server macht das so: Spoiler function FileIsInUse(const Filename: WideString): Boolean; var Handle : THandle; begin Handle := Windows.CreateFileW(PWideChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if Handle = INVALID_HANDLE_VALUE then Result := true else begin CloseHandle(Handle); result := false; end; end; Quote Link to comment
DetlefM Posted April 21 Author Share Posted April 21 Danke für das Feedback - die timerlist in Verbindung mit "Recording" und "RealFilename" beantwortet meine Frage. Hatte ich in der Dokumentation verpasst. 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.