[ANNOUNCE] naludump-0.0.1 - NALU fill data Löschtool

  • Hallo Portal,


    Ich hab Version 0.0.1 meines h.264 nalu fill data removal Tools veröffetlicht.


    Das Tool löscht NALU fill data aus h.264 Streams in TS Dateien wie VDR-Aufnahmen. Die Dateistruktur wird dabei weitgehend beibehalten, nur TS-Pakete, die komplett aus NALU fill bestehen, werden entfernt. Auf HD-Kanälen mit fixer Videobandbreite kann das 40-60% der Dateigröße einsparen, ohne Bildinformationen zu verlieren.


    Version 0.0.1 ist ein Standalone-Tool um einzelne Dateien zu verarbeiten. Bitte testet es mit Aufnahmen, prüft, ob die Aufnahme noch unverändert abspielbar ist, und, wenn Ihr habt, verwendet Verifikations-Tools wie ts-doctor, um das Ergebnis auf Fehler zu prüfen.


    Spätere Versionen wird es auch als Patch für VDR geben, damit die fill Daten bereits bei der Aufnahme ausgefiltert werden.


    Siehe auch den vorangegangenen Thread: TSDoctor für VDR? - Filler Data Entfernen


    VDR Mailing-Liste: [vdr] [ANNOUNCE] naludump 0.0.1


    Quelltext gibt's hier:


    http://www.udo-richter.de/vdr/naludump.html



    Code-Interessierten sei noch folgender Hinweis gegeben: Viele Codeteile sind abgespeckte Versionen von VDR-Quelltexten, der neue Programmcode findet sich in naludump.c (Dateiverarbeitung) und in remux.c (Klasse cNaluDumper und einige Hilfsfunktionen).


    Gruß,


    Udo

  • Meine Version hab ich geschrieben. :D



    Die Struktur ist etwas anders aufgebaut, dadurch imho leichter zu überblicken. Jeder Programmierer hat halt seinen Stil, und kann damit am besten. Und außerdem ist man beim zweiten Mal immer etwas schlauer.


    Der Code versucht auch schon mal möglichst viel von VDR mit zu benutzen. Den PAT-PMT Parser zum Beispiel. Buffer für Ein- und Ausgabe, um die Anzahl Lese/Schreiboperationen zu senken.


    Außerdem ist meine Version so minimal-invasiv, wie ich früher schon mal vorgeschlagen hatte: Als überflüssige Fill-Data gilt nur die vorgeschriebene Byte-Folge FF .... FF 80. Nur Pakete, die komplett aus dieser Füllmasse bestehen, werden gelöscht. (Es bleiben immer Reste von Fülldaten < 184 Byte übrig.) Und: Die Ausgabedatei hat komplett regelkonforme Fülldaten im Format FF ... FF 80.


    Als Schmankerl kann der Code auch fill bytes am Anfang eines Pakets entsorgen und zu extension field filler umwandeln. Allerdings habe ich noch keinen Fall gesehen, bei dem die nalu fill's nicht exakt bis zum Ende eines TS-Pakets gehen. Und das nächste TS-Paket scheint auch immer ein gesetztes payload start flag zu haben. Aber man weiß ja nie.


    Gruß,


    Udo

  • Hab das mal probiert.


    Musste libjpeg-dev nachinstallieren dann lief make durch.


    index Datei gelöscht und naludump laufen lassen.


    Danach war die datei ca 50% kleiner und ich konnte sie ohne irgendwelche Störungen abspielen.
    Index Datei wurde neu erstellt und alles ist gut.


    Vielen Dank für dieses tolle tool,spart echt viel Platz auf der Platte

    Hardware
    TBS-6981(rennt perfekt)
    ASUS AT3IONT-I Mini-ITX
    DDR3 4GB Kingston ValueRAM
    Samsung EcoGreen F2 1TB
    LG DH16NS schwarz Bulk
    Pollin X10


    Software
    yaVDR 0.4pre1 alle Updates

  • Hallo,


    habe das Tool auch mal probiert und bin dabei zu folgenden Ergebnissen gekommen:


    ARD HD: Ersparnis rund 50%.
    ORF HD: Ersparnis rund 35%


    Das Kriterium für den Erfolg ist IMHO die index-Datei: Ist sie nach dem Schrumpfen und Neugenerieren gleich groß, dann ist alles OK. Ich hatte aber auch den Fall (bei ORF HD), dass die index-Datei plötzlich doppelt so groß war und die Zeiten nicht mehr stimmten, soll heißen, der Film war doppelt so lang (VDR-Anzeige beim Abspielen).


    Bin gerne bereit, auch weitere Tests zu machen.


    Ein Frohes Neues!
    Michael

    VDR1: yavdr 0.5 x86_64, 2.0.2, P5QD-Turbo, HVR-4000, TBS-6980, Zotac GT240
    VDR2: yavdr 0.5 x86_64, 2.0.2, auf M3N78 headless als Server
    VDR3: yavdr 0.5 x86_64, 2.0.2, auf ZOTAC ION Mini-ITX als Streaming Client in Koexistenz mit OpenELEC 12.1

  • Hab mal mit einer Datei einer SKY-HD Aufnahme getestet. Ergebnis: 0% dropped. Hab ich was verkehrt gemacht?



    Hier mal mein Aufruf:
    vdr:~/naludump-0.0.1# ./naludump ../00001.ts
    Input file: ../00001.ts
    Packets: 11157666 Dropped: 0 (0%)

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Zitat

    Original von Copperhead
    Das klappt nur mit den öffentlich-rechtlichen


    Achso? Gibt es da einen Grund für? Oder gibts dort die Fill Data nicht?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hi,


    danke Udo für diese stand-allone Variante, mir gefällt die schon so, auch wenn Du sie in Zukunft anders machen willst, habe sie trotzdem wie folgt als reccmd integriert, durch 2 Skripte (damit man das ganze innerhalb einer screen session aufrufen kann, vielleicht hilft das auch anderen freiwilligen Testern:


    /usr/bin/naludump_vdr.sh:


    /usr/share/vdr/bin/naludump_vdr_recording.sh (Pfad ist bei Gentoo VDR so üblich, dieses Skript sollte man in reccmds.conf einbinden):

    Bash
    #!/bin/bash
    
    
    screen -dm sh -c "naludump_vdr.sh \"$1\""


    Für Gentoo das ebuild /media-video/naludump-0.0.1:


    Anbei das ebuild mit den skripten auch als Attachment.


    Gruß,
    Lucian

    Dateien



    Gentoo overlay mit VDR (und nicht nur) ebuilds, vdrcm, GLCDprocDriver

    Einmal editiert, zuletzt von Zoolook ()

  • Zitat

    Hab mal mit einer Datei einer SKY-HD Aufnahme getestet. Ergebnis: 0% dropped. Hab ich was verkehrt gemacht?


    Nö... ist bei mir genauso. Auf Sky und HD+ Sendern bringt das Strippen so gut wie keine Verringerung der Dateigröße.


    Gruß
    iNOB

  • Zitat

    Originally posted by Urig
    Bitte testet es mit Aufnahmen, prüft, ob die Aufnahme noch unverändert abspielbar ist, und, wenn Ihr habt, verwendet Verifikations-Tools wie ts-doctor, um das Ergebnis auf Fehler zu prüfen.


    So, ich hatte jetzt Gelegenheit, naludump mal ausführlich zu testen. Ich habe es über 15 ältere und neuere HD-Aufnahmen laufen lassen, alle ARD und ZDF. Dabei waren sowohl (US-) Spielfilme als auch eigenproduzierte Reportagen und Serien.


    Anschliessend habe ich die Aufnahmen mit TS-Doctor 1.0.53 ("c't Edition) überprüft.


    Ergebnis: Die Größe der Aufnahmen wird (wie schon bekannt) in der Regel um ca. 40 bis 60% reduziert. In Einzelfällen sind's aber auch nur 15 bis 20%. Ich konnte in keinem Fall feststellen, dass durch das Entfernen der Nalu's Fehler entstanden sind.


    Mein persönliches Fazit: Naludump ist "safe" :tup :tup


    Das bedeutet allerdings nicht, dass TS-Doctor keine Fehler gefunden hätte: Bei Aufnahmen mit AC3 5.1 Ton kommen bei mir bei den meisten Aufnahmen regelmässig (so ca. 100 bis 150x pro Aufnahme) folgender Fehler:


    Diese sind allerdings schon in den unbehandelten Ausgangsaufnahmen vorhanden. Beim Anschauen hat das bei mir allerdings bis jetzt noch nicht zu wahrnehmbaren Fehlern geführt, vielleicht ist der TS-Doctor da auch einfach etwas zu "mäkelig".


    PS: Bei Verwendung von nalustripper (weiss nicht mehr, ob die Implementation von MartenR oder Urig) gibt TS-Doctor noch folgende Warnung aus.

    Code
    TS  WARNING: For PID 177A $000378A7: Paket discontinuity 3,0
    TS  WARNING: For PID 177A $0003CFD8: Paket discontinuity 12,8
    TS  WARNING: For PID 177A $000439B1: Paket discontinuity 4,12
    TS  WARNING: For PID 177A $00045F7D: Paket discontinuity 8,6
    TS  WARNING: For PID 177A $000614D4: Paket discontinuity 10,8
    TS  WARNING: For PID 177A $00061BD9: Paket discontinuity 6,4
    TS  WARNING: For PID 177A $00061C60: Paket discontinuity 15,13
    TS  WARNING: For PID 177A $00065A43: Paket discontinuity 11,2


    Das passiert bei naludump nicht.


    Grüße, Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Jetzt kam ich endlich auch mal zum Testen.


    Ich habe zwar discontinuity-Warungen, die sind aber vorher wie nachher da (altes TS-Doctor 1.0.10 aus dem Keller gehohlt):


    unbehandelte Aufhnahme:


    Dann naludump drüber, aus 9,3 GB werden 7,2 GB -!!



    Art und Anzahl der Fehler also vorher und nachher gleich. Sichtprüfung (also Film komplett geschaut) gab keine Auffälligkeiten.


    Gleiches Spiel (ohne Sichtprüfung) bei einer arte-Aufnahme. Hier lies naludump sogar die angeblich verschlüsselten Pakete im Stream der arteHD-Aufnahme.... :lachen3

  • Hallo,


    erstmal vielen Dank an Urig für das Tool! Ich habe es mal auf zwei aktuelle Aufnahmen losgelassen, die von BBC HD und BBC One HD (S28.2E) stammen. Das Tool hat Pakete entfernt, jedoch wurde in beiden Fällen nur 1% der Dateigröße eingespart, das heißt, es lohnt sich hier eigentlich nicht, das Tool zu verwenden.


    Das kann natürlich verschiedenste Ursachen haben, die wahrscheinlichste ist, dass BBC das ganze irgendwie cleverer macht als ARD und ZDF. ;) Wie kann ich denn ersehen, ob dort mit variabler Bandbreite gesendet wird? Geht das hier ohne Account:


    http://www.linowsat.de/cgi-bin…cgi?0282-10847-V-2050-0-0


    EDIT: Ein Teil meiner Fragen wird hier beantwortet: TSDoctor für VDR? - Filler Data Entfernen


    Gruß
    hepi

  • Hallo.


    Ich habe den Naludump auf meinem x86 Server mit zwei Dreambox TS Aufnahme getestet. Leider entfernt er dort keine Blöcke.
    Ich habe auf dem Server vdr installiert und das naludump binary installiert.


    Weiß vielleicht jemand woran das liegen kann?


    Code
    lin007:~# /tmp/naludump /media/Musik/ZDFHD-Lena .ts /media/Musik/test.ts
    Input file: /media/Musik/ZDFHD-Lena .ts
    Output file: /media/Musik/test.ts
    Packets: 21448921 Dropped: 0 (0%)
    lin007:~#


    Danke.

  • Hab gerade eine erste Testversion eines VDR-Patches zusammen geflickt. Setup-Option etc. fehlt noch, aber er hat immerhin schon eine 1-minütige Testaufnahme geschafft. :)


    Da das Wochenende schon wieder um ist, mach ich mal release eary, release often. Der Patch ist im Anhang. Wer Experimentierfreudig ist, kann bis zum nächsten Wochenende schon mal probieren, bis dahin sollte dann eine endgültige Version und eine neue Kommandozeilenversion fertig sein.


    Aktiv wird er so nur, wenn NALUDUMP im Dateinamen auftritt. Wer ganz mutig ist, kann im Quelltext Setup_DumpNaluFill = true setzen, dann ist der Patch bei allen MPEG4-Aufnahmen aktiv, und lässt sich über NALUKEEP im Dateinamen deaktivieren.


    Gruß,


    Udo

Jetzt mitmachen!

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