DistributedVideoDirectory für VDR 2.2.0 und neuer

  • Die Idee die Cache-Verwaltung in ein Skript auszulagern ist keine schlechte Idee, gefällt mir :thumbup:!


    Das Quoting von Dateinamen einfach weglassen, weil es mit nicht läuft, ist nicht gut. Das kann zu Problemen führen, wenn Leerzeichen ins Spiel kommen.

    Bei Debian tippe ich auf BASH als Ursache für das Problem, standardmässig ist die Shell nämlich gar nicht installiert und der Ersatz kann nicht alles. Man muss lediglich das Paket nachinstallieren, dann sollte es gehen.


    Was bei dem Skript IMHO noch fehlt ist eine regelmässige Kontrolle der Belegung der Cache-Partition.

    Nicht dass einem bei einem Aufnahme- oder Schnitt-Marathon der Platz ausgeht.


    Statt "nice" sollte man "ionice" setzen. Bei einem Verschiebebefehl mit viel HDD-Zugriff, kann es nicht schaden auch den nice zu machen.


    Und was passiert eigentlich, wenn der VDR auf die Aufnahme gerade zugreift, während sie verschoben wird?

    Fängt mv das schon ab?


    Die Anzeige des freien Platzes dürfte aktuell auch nicht korrekt sein?

    Da wird man momentan nur den Platz auf der Cache-Partition sehen, denke ich.

    Gruss
    SHF


  • Zitat

    Und was passiert eigentlich, wenn der VDR auf die Aufnahme gerade zugreift, während sie verschoben wird?

    Fängt mv das schon ab?

    Da bin ich mir nicht sicher ob mv das abfängt wenn man unterschiedliche Filesysteme hat. Daher hab ich mit lsof ebgefragt ob die Datei "in use" ist.


    Zitat

    Was bei dem Skript IMHO noch fehlt ist eine regelmässige Kontrolle der Belegung der Cache-Partition.

    Nicht dass einem bei einem Aufnahme- oder Schnitt-Marathon der Platz ausgeht.

    Da haste Recht, das hatte ich auch schon angedacht, aber dann einfach wieder verworfen weil ich ja weiss was ich tue :sleep

  • Das Quoting von Dateinamen einfach weglassen, weil es mit nicht läuft, ist nicht gut. Das kann zu Problemen führen, wenn Leerzeichen ins Spiel kommen.

    Bei Debian tippe ich auf BASH als Ursache für das Problem, standardmässig ist die Shell nämlich gar nicht installiert und der Ersatz kann nicht alles. Man muss lediglich das Paket nachinstallieren, dann sollte es gehen.


    Die Bash ist bei mir installiert und trotzdem kommt der Fehler.

    Code
    bash --version
    GNU bash, Version 4.4.12(1)-release (x86_64-pc-linux-gnu)
    
    ii  bash                                 4.4-5                   amd64


    Woran könnte es denn noch liegen ?


    Gruß dile

  • Du könntest es mal mit "${*}" probieren, ob er das will.


    Wobei $* ja so eine Spezial-Variable ist, die alle Argumente als Strig enthält.

    Eventuell ist in dem einen Fall das Quoting unnötig, das weiss ich aber nicht auswendig.

    Ist das die einzige Stelle?

    Gruss
    SHF


  • Du könntest es mal mit "${*}" probieren, ob er das will.


    Wobei $* ja so eine Spezial-Variable ist, die alle Argumente als Strig enthält.

    Eventuell ist in dem einen Fall das Quoting unnötig, das weiss ich aber nicht auswendig.

    Ist das die einzige Stelle?


    Das macht keinen Unterschied. Ich habe es jetzt nochmal unter Debian Testing ausprobiert und bekomme mit dem original Script die folgende Meldung wenn ich es als root ausführe:


    lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

    Output information may be incomplete.


    Mir ist auch aufgefallen das in den Logfiles auch der Benutzername vom User mit der UserID 1000 auftaucht wobei ich aber nicht verstehe woher das kommt.


    Vielleicht hat da noch jemand Input für mich. Vielen Dank

  • Ich habe das folgende Testscript gebastelt und bei mir geht das unter Debian 9. Auch als root.

    Das Script zeigt auch ganz schön den Unterschied von "$*" und $*.


    Die Ursache des Fehlers muss wohl wo anders liegen.

    Gruss
    SHF


  • Hi,

    blöde Frage mal:

    Wie muss ich das mounten? Plugin bauen (für VDR 2.2.0 ) geht und wird auch geladen.

    Code
    Aug 14 19:04:21 easyVDR vdr: [15707] starting plugin: distributedvideodir
    Aug 14 19:04:21 easyVDR vdr: [15707] cVideoDirectoryLinked instantiated!
    Aug 14 19:04:21 easyVDR vdr: [15710] DerivedVideoDirectory Contains: /video0/Lost_Places_-_Hitlers_unterirdische_Raketenbasis/2019-02-15.22.03.508-0.rec
    Aug 14 19:04:21 easyVDR vdr: [15710] DerivedVideoDirectory Contains: /video0/Fast_&_Furious#3A_Hobbs_&_Shaw/2022-04-21.20.08.8-0.rec


    Aber der verfügbare Platz im OSD ist nach VDR Neustart trotzdem nur der der ersten Platte (video0).


    Gemounted in fstab mit:

    Zitat

    UUID=5c0abcde-2e5d-4ec7-9e4e-f9ce73c9df3d /media/easyvdr01/video0 xfs noatime,defaults 0 2

    UUID=57687260-c3ff-4bf9-83a4-33c695ab600e /media/easyvdr01/video1 xfs noatime,defaults 0 2

    /media/easyvdr01/video1 ist vorher angelegt und hat 755 Rechte und gehört ebenso vdr.


    Bin ratlos.


    Oder muss ich in der setup.conf

    RecordingDirs = 1

    auf 2 ändern?


    MfG,

    Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

    3 Mal editiert, zuletzt von SurfaceCleanerZ ()

  • Hi,

    Oder muss ich noch irgendeinen Parameter ans Plugin übergeben beim Start?

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Hi,

    hat echt keiner eine Idee, wie das früher ging?


    MfG,

    Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Bei mir lief das problemlos bei mount auf:


    /video0

    /video1


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Es sollte genau so gehen, wie früher. Der Teil ist einfach übernommen.

    --video=/media/easyvdr01/video0 sollte reichen und der VDR beide einbinden.


    Als debug-Meldung sollte das Plugin auch die Grössen der Platten einzeln ausgeben. FreeSpace at ...

    Das müsste bei entsprechndem Debug-Level direkt beim Start kommen, wenn ich das noch recht erinnere.


    Was sagt denn df ?

    Gruss
    SHF


  • Hi,

    Danke für die Rückmeldungen, ich gucke morgen nach. Ich bin gerade nicht am VDR.

    Zitat

    --video=/media/easyvdr01/video0 sollte reichen und der VDR beide einbinden.

    Das als Parameter in der Pluginlist? Das teste ich. Ich habe wie gesagt beide als video0 und 1 gemountet via fstab, aber er findet nur die alte video0.


    Die Ausgaben vom Pluginstart hatte ich oben ja schon geschrieben. Keine Größenangabe.


    df kommt.

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Das als Parameter in der Pluginlist?

    Als Parameter für den VDR. Das Plugin selbst stellt nur das alte Verhalten wieder her und hat (mit Absicht) keine Parameter.


    Das Videoverzeichnis sollte wie oben, genau einmal im Startbefehl des VDR auftauchen. Wie der zusammengebastelt wird ist aber Distri abhängig.

    Irgend ein Verzeichnis muss ja übergeben werden, sonst ginge es ja gar nicht. Eventuell aber nicht ganz korrekt, so dass das Plugin es nicht versteht.


    Vielleicht stört auch das "01" von "easyvdr01" im Pfad. Wäre aber ein merkwürdiger Bug, da es im Test sogar mit Symlinks ging.

    Gruss
    SHF


  • Hi, ich habe viel versucht, aber ich bekomme es nicht hin.

    Das Plugin läuft und erstellt auch Logeinträge. Aber die neue HDD wird nicht zusammen gemountet. Der freie Plattenplatz ist immer noch nicht mehr vorhanden.

    Das Videoverzeichnis ist ein Symlink bei easyvdr.

    Hast du noch eine Idee?

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Gibt es Logeinträge mit "video1" drin? Ich vermute nein.


    Was wird dem VDR genau mit dem "--video" Parameter übergeben.

    Die HDDs sind unter "/media/easyvdr01/video0" bzw. 1 gemountet und mittels Symlink auch unter /video0 und /video1 erreichbar?

    Symlink sollte gehen, aber man könnte es mal mit mount bind statt des Symlink versuchen. Evtl. ist da noch ein komischer in Bug drin.


    Wenn möglich die Kommentare in videodirtools.c Zeile 48 und 52 entfernen (nur testweise, das wird öfters aufgerufen).

    Dann wissen wir, ob er es überhaupt als "distributed" erkennt. Das sollte wegen der "0" am Ende eigentlich der immer Fall sein.


    Wenn das zu nichts führt, muss ich mir da noch eine sinnvolle Logmeldung überlegen. (An das Chaos muss ich eh mal ran, sehe ich gerade. Da ist noch einiger Müll vom Testen drin.)

    Das Problem ist, dass er nur "video0" kennt und die anderen Verzeichnisse bei jedem Zugriff probiert.

    Gruss
    SHF


  • Da ich aktuell mal wieder eine DVB-Karte im Arbeitsrechner habe, habe ich die Gelegenheit genutzt und dies hier auch mal erledigt.


    Funktionell gibt es keine Änderungen, lediglich die Log-Meldungen wurden überarbeitet.

    Getestet habe ich es mit dem aktuellen VDR 2.6.4, bei mir hat es ohne weitere Änderungen wie bisher funktioniert.


    Beim Start kommt jetzt eine kleine Zusammenfassung über die gefundenen Verzeichnisse:

    Code
    VDLinked #0: 20000MB free ../video0 > /some_dir/videos
    VDLinked #1: 45000MB free ../video1 > /some/other/dir
    VDLinked ->: 65000MB free, 2 Directories, Basename: ../video0
    Warning: Pathname for VideoDirectory isn't absolute. This may not work as expected!

    So kann man endlich sehen, ob die Verzeichnisse auch richtig erkannt werden.


    Das ist, wie gesagt, aber eine Momentaufnahme, diese Funktion läuft dauernd, bei jeder Aufnahme, Verschieben, ...

    Theoretisch wäre es sogar möglich Platten während der Laufzeit hinzuzufügen (aber nicht zu entfernen).

    Solange man das aber nicht macht, sollte sich das Ergebnis nicht ändern.


    Dann werden noch die erzeugten bzw. veränderten Links geloggt:

    (Der Übersichtlichkeit halber etwas gekürzt.)

    Code
    record ../video0/Recording/20____.rec
    Symlink: ../video0/Recording/20____0.rec/00001.ts    -> /some/other/dir/Recording/20____.rec/00001.ts
    
    Moving inside Videodir.
    Oldlink: ../video0/abc/Recording/20____.rec/00001.ts -> /some/other/dir/abc/Recording/20____.rec/00001.ts
    Newlink: ../video0/Recording/20____.rec/00001.ts     -> /some/other/dir/Recording/20____.rec/00001.ts
    Moving:  ../video0/abc/Recording/20____.rec          to ../video0/Recording/20____.rec

    Beim Aufnehmen ist das typischer Weise nur eine Zeile mehr, beim Verschieben drei.

    Diese Angaben plus Fehlermeldungen sollten ausreichend sein, um festzustellen wo es gehakt hat, falls was schief gegangen ist.



    Als Nebeneffekt kommen die Meldungen leider auch beim Löschen von Aufnahmen.

    Code
    deleting recording '../video0/Recording/20____.rec'
    Oldlink: ../video0/abc/Recording/20____.rec/00001.ts -> /some/other/dir/abc/Recording/20____.rec/00001.ts
    Newlink: ../video0/abc/Recording/20____.del/00001.ts -> /some/other/dir/abc/Recording/20____.del/00001.ts
    Renaming: ../video0/abc/Recording/20____.rec         to ../video0/abc/Recording/20____.del

    Wen das stört, muss sie halt auskommentieren, selektiv geht das leider nicht so einfach.


    Prinzipiell ist das Anpassen der Links vor dem Löschen eigentlich unnötig, wird ja eh bald gelöscht.

    Evtl. kann man das ganz raus nehmen, ich kann aber momentan nicht sicher ausschließen, dass die Funktion anderweitig verwendet wird, daher erstmal keine funktionalen Änderungen.


    Patch auf die vorherige Version und vollständiges tar.gz-Archiv im Anhang.

    (Endungen Anpassen!)

    Gruss
    SHF


    Einmal editiert, zuletzt von SHF () aus folgendem Grund: Doch beide Anhänge hier, 1. Beitrag angepasst.

  • Hi,

    Teste ich nächste Woche gern mal (mit dem easyvdr v3.5 VDR 2.2.0). Bisher gammelt die neue HDD nur ungenutzt rum, da ich sie nicht zum Laufen bekomme.

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Hi,

    Ich habe es gestern hinbekommen mit der 0.0.2: man muss einen Symlink von /video1 auf den Mountpoint der zweiten Platte legen. Dann geht es.


    Vielen Dank für das Plugin!

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

    2 Mal editiert, zuletzt von SurfaceCleanerZ ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!