vdrnfofs mit Python 3

  • Ich habe vdrnfofs mal in meinen GitHub-Account geforkt und für Python 3 fit gemacht:


    https://github.com/M-Reimer/vdrnfofs


    Das offizielle Repo sieht schon seit fast 10 Jahren keine Updates. Mit projects.vdr-developer.org werde ich mich nicht mehr rumärgern. Folglich der Umzug auf GitHub.


    Ich habe den Stand mal als Version 0.9 getaggt. Ich will mich noch um einen Fehler kümmern mit gelöschten Aufnahmen und dann wird das als Version 1.0 rausgegeben. War lange genug 0.x.


    Gerne Pull-Requests oder Issues anlegen. Bessere Anpassung auf alte VDR-Aufnahmen nehme ich aber nur als Pull-Request an. Issues schließe ich sofort. Kann ich selber nicht testen!

  • Danke erstmal :)

    Macht bei mir aber noch nicht, was es soll:

    Code
    1. vdrnfofs /mnt/vdrnfofs -o video=/srv/vdr/video,allow_other
    2. INFO:root:Starting vdrnfofs
    3. # export LANG=C;ls /mnt/vdrnfofs
    4. ls: reading directory '/mnt/vdrnfofs': Software caused connection abort
    5. # ls /mnt/vdrnfofs
    6. ls: cannot access '/mnt/vdrnfofs': Transport endpoint is not connected

    Wobei nach dem mount auch nichts im "df" erscheint.

    Hier das strace von "vdrnfofs /mnt/vdrnfofs ..." und den ls-Versuch.

    Files

    • nfofs.zip

      (29.05 kB, downloaded 5 times, last: )
    • nfo.zip

      (2.02 kB, downloaded 6 times, last: )

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Bei mir scheitert die Installation:


    Code
    1. gentoo vdrnfofs # ./setup.py install
    2. Traceback (most recent call last):
    3. File "/usr/local/src/vdrnfofs/./setup.py", line 23, in <module>
    4. import setuptools
    5. ModuleNotFoundError: No module named 'setuptools'
    Code
    1. gentoo vdrnfofs # emerge -pv dev-python/setuptools
    2. These are the packages that would be merged, in order:
    3. Calculating dependencies... done!
    4. [ebuild R ] dev-python/setuptools-50.3.0::gentoo USE="-test" PYTHON_TARGETS="python3_8 (-pypy3) (-python3_6) -python3_7 -python3_9" 0 KiB
    5. Total: 1 package (1 reinstall), Size of downloads: 0 KiB

    D.h. setuptools sind installiert.


    vdr-User-# 755 to_h264 chk_r vdr-transcode

  • Ist python3 bei dir als python im PATH verfügbar? Ansonsten musst du vermutlich den Shebang in https://github.com/M-Reimer/vdrnfofs/blob/master/setup.py#L1 anpassen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Code
    1.  gentoo vdrnfofs # python3
    2. Python 3.9.0 (default, Jan 4 2021, 15:28:06)
    3. [GCC 9.3.0] on linux
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>>


    vdr-User-# 755 to_h264 chk_r vdr-transcode

  • Gefunden: python3 ging auf python-3.9 und setuptools auf python-3.8


    vdr-User-# 755 to_h264 chk_r vdr-transcode

  • Jetzt legt er das Filesystem an, ich kann die Dateien jedoch nicht lesen.


    vdr-User-# 755 to_h264 chk_r vdr-transcode

  • Me too. D.h. das "vdrnfofs ..." tut anscheinend und sagt auch "starting vdrnfofs", aber beim Versuch, nur "ls /mnt/vdrnfofs" zu machen, segfaultet es.

    Habe oben schon die strace-Ausgaben gepostet.

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Ich muss das mal später probieren, wenn ich ein VDR-Aufnahmeverzeichnis zum Experimentieren zur Verfügung habem aber warum wird da eigentlich StringIO genutzt (historisch gesehen hat Python2 ja munter Bytestrings und Unicode-Strings gemischt)? Sollte man da nicht besser BytesIO nutzen? Und in https://github.com/M-Reimer/vd…enated_file_reader.py#L50 müsste man dann open mit 'rb' aufrufen, um nackte Bytes zu lesen, statt zu versuchen UTF-8 zu dekodieren, was bei Binärdateien früher oder später zwangsläufig schiefgehen wird.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Jetzt sehe ich auch warum die Tests gelaufen sind. Die mounten ja garnicht richtig sondern importieren Bestandteile des Filesystem-Treibers direkt um direkt ohne Fuse mit denen zu sprechen.


    Zumindest im Hintergedanken möchte ich auch mal behalten, dass eventuell hier eine optionale Anbindung an mein noch in Entwicklung befindliches SVDRP-Modul denkbar wäre. Also nur rein theoretisch und ohne jetzt zu viel versprechen zu wollen. Grund: Ich fände es eigentlich recht praktisch auch Aufnahmen einfach durch Löschen der zugehörigen Dateien löschen zu können. Wenn, dann aber richtig und sauber. Soll heißen: Nicht durch Löschen von irgendwas im Dateisystem sondern durch Absetzen von "DELR" an den VDR.

  • Ja, BytesIO ist besser. Das hat zumindest bei meinem Test schonmal die ".mpg"-Dateien gefixt.

    Man könnte auch mal schauen, ob es nicht schneller ist mmap zu nutzen, um in den Dateien zu suchen und den Buffer als MemoryView abbilden (die Größe, die man allozieren muss, ist ja vorab bekannt).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke mal wieder :)

    Hat aber immer noch nicht geklappt.

    In dmesg krieg ich den segfault:

    [47473.079131] vdrnfofs[1560067]: segfault at 0 ip 00007ff382e02675 sp 00007ffd7ff25858 error 4 in libc-2.31.so[7ff382c9c000+178000]

    [47473.079276] Code: 00 00 0f 1f 00 31 c0 c5 f8 77 c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 89 f9 48 89 fa c5 f9 ef c0 83 e1 3f 83 f

    9 20 77 2b <c5> fd 74 0f c5 fd d7 c1 85 c0 0f 85 eb 00 00 00 48 83 c7 20 83 e1


    Soll ich nochmals die strace-Ausgaben attachen?

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Kannst du mal versuchen vdrnfofs mit einem höheren Debug-Level als info im Vordergrund zu starten?

    vdrnfofs /mnt/vdrnfofs -d -o video=/srv/vdr/video,allow_other -o loglevel=debug


    Ist das Paket python3-fuse installiert?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hier der debug-Start:

    ~# apt-cache policy python3-fuse

    python3-fuse:

    Installiert: 2:1.0.0-3build1


    ~# apt-cache policy libfuse2

    libfuse2:

    Installiert: 2.9.9-3


    Nach "ls /mnt/vdrnfofs" dann

    Hmmm ...

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Kannst du mal zeigen, was für Inhalt dein Aufnahmeverzeichnis in der ersten Ebene hat? ls -lsh /srv/vdr/video/


    Kann es eventuell sein, dass du da eine NFS-Freigabe im Aufnahmeverzeichnis hast, die mit root squash exportiert wurde und dadurch das Skript (das du vermutlich als root laufen lässt) nicht die nötigen Zugriffsrechte hat?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    The post was edited 1 time, last by seahawk1986 ().

  • Hi Seahawk,


    hier nur der Beginn:

    wobei ich selbst erst vor kurzem die Schreibrechte für die Gruppe "vdr" hinzugefügt habe.

    Der "leere" Eintrag zu Beginn, den hab ich selbst noch nicht entdeckt, werde den mal löschen ...


    Hmm, hab das getan, leider keine Änderung.

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.

  • Ich könnt mir vorstellen, dass dieser Name "Bridget_Jones'_Baby_-_Bridget_Jones's_Baby" nicht so ideal ist mit Hochkomma und Anführungszeichen?

    MyVDR: yaVDR-Ansible (Ubuntu 18) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Hab das umbenannt, auch keine Änderung ...

    --
    vdr User #2022 - hdvdr2: Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 12 GB Ram, zram-swap/tmp, ubuntu-focal, softhddevice-vdpau
    ddbridge-6.x mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF720 SFF passiv (nvidia-460.32), System SSD btrfs,

    snapper, 8TB HDD XFS/cow /srv/vdr, yavdr-ansible-2.4.6-patches, vdr-epg-daemon mit Frodo-plugins, Kernel 5.10.7-xfsscrub

    vdradmin-am, live+webstreaming, vdrmanager (Smartphones als FB), ffmpeg-4.3.1-libfdk_aac, vdr-plugin-hbbtv. Folding@home läuft auf CPU.