vdr-requant.sh - verkleinern von VDR-Dateien

  • Hi,


    ich habe mal, mehr aus allgemeinem Interesse ein kleines Script gebaut, welches mittels requant ohne grossen Rechenaufwand VDR-Aufnahmen verkleinert. Ich habe so bei mir ohne grossen Zeitaufwand mal eben noch ein paar Stunden Platz gewonnen ;)


    Voraussetzungen:
    - requant
    - vdrsync.pl
    - tcmplex
    - genidx


    Vorgehen:
    - Script in leeres Verzeichnis legen
    - Ausfuehren mit Faktor (z.B. 1.4) und Videoverzeichnis als Parameter
    - Freuen ueber ein neues Verzeichnis result.*, in dem der kleingerechnete Film samt
    zugehoeriger VDR-Files liegt
    - Dieses Verzeichnis mit passender Verzeichnisstruktur in den VDR-Tree legen, ausprobieren und
    alten (grossen) Film via OSD loeschen.


    Bugs:
    - Wenn der resultierende, verkleinerte Film groesser als 2 GB ist, kann VDR nichts mehr damit
    anfangen
    - Bisher nur oberflaechlich getestet


    Tips:
    - Die qualitativ besten Ergebnisse erhaelt man bei Faktoren bis zu 1.5


    Vielleicht kann ja jemand was damit anfangen. Grundsaetzlich waere es auch kein Thema das Script so anzupassen, dass man es ueber die reccmds.conf aufrufen kann.


    EDIT: neue Version gaaanz unten im Thread (hier: http://www.vdr-portal.de/board…hp?postid=71895#post71895)


    cu
    gonz

  • Werde dann auch mal Abends "pressen" nen haufen Serien, anbei die Änderung für die reccmds.


    MFG Ronny


  • Hi,


    cool - wollte heute Nacht sowieso ne Version mit reccmds.conf bauen, da werd ich Deine
    Aenderungen einfliessen lassen. Die neue Version wird das Ergebnis im selben Verzeichnis der Aufnahme speichern, das Datum allerdings auf 10 Jahre in der Zukunft stellen :)


    (ausserdem sind noch paar bugfixes drin, die Pruefung auf Vorhandensein der Binaries funktioniert z.B. derzeit nicht wirklich) :)


    Thanks!


    cu
    gonz

  • Zitat

    (ausserdem sind noch paar bugfixes drin, die Pruefung auf Vorhandensein der Binaries funktioniert z.B. derzeit nicht wirklich) :)


    hi,


    ich mache dass in einem script von mir (queuehandler.sh von vdrrip) so:


    for exe in "$mencoder" "$mplayer" "$nice" "$pgrep"
    do
    if [ ! -x "$exe" ]
    then
    echo
    echo "error: $exe doesn't exist or isn't a executable file"
    echo " check the value for $exe= in $scriptname in the"
    echo " section # initial definitions"
    echo
    exit 1
    fi
    done


    ... sollte doch leicht zu uebernehmen sein.



    greetz


    herbsl

  • Hi,


    wie versprochen anbei die neue Version (0.0.16a).


    Was hat sich geaendert:


    - Benoetigt keinen eigenen Pfad mehr sondern kann z.B. aus /usr/local/bin aufgerufen werden
    - genidx wurde ordnungsgemaess zu genindex umbenannt
    - Etwas besser dokumentiert
    - Fix fuer den Teil der das Vorhandensein der Binaries ueberpruefen soll
    - Alle Unterprozesse werden nun sauber geniced
    - Einfuehrung eines Wrappers fuer Hintergrundausfuehrung via at
    - Unterstuetzung fuer reccmds.conf mit Ausgabe auf das OSD bei Ende
    - Benutzt nun das Video-Verzeichnis auch als Zielverzeichnis, wobei
    das Datum um zehn Jahre hochgeschraubt wird
    - Es werden bei der Ausfuehrung via Commandline nun Part 1-4 angezeigt
    - In die summary.vdr wird die Notiz hinzugefuegt, dass das Video bereits durch vdr-requant lief
    - README und HISTORY FILE


    Ueber Rueckmeldungen ob und wie es funktioniert und welche Verbesserungsvorschlaege Ihr habt wuerde ich mich latuernich freuen! :)


    Viel Spass!


    EDIT: aktuellere Version unten


    gonz

  • Griasde Grouwa!


    Zitat

    Original von gonz
    Ueber Rueckmeldungen ob und wie es funktioniert und welche Verbesserungsvorschlaege Ihr habt wuerde ich mich latuernich freuen! :)


    Na, dem Manne kann geholfen werden. ;) 

    Zitat

    Bugs:
    - Wenn der resultierende, verkleinerte Film groesser als 2 GB ist, kann VDR nichts mehr damit anfangen


    Hmm, das stimmt so nicht ganz. ;D Musst nur eine Kleinigkeit anderst machen:

    Code
    1. echo
    2. echo part 3/4 - tcmplex
    3. echo
    4. nice -n 15 tcmplex -i 001.mpv -p $AUDIO -o 001.vdr -m d
    5. echo
    6. echo part 4/4 - genindex and cleanup
    7. echo
    8. nice -n 15 genindex


    Nun bevor Du im Teil 4 von 4 "anwirfst" musst Du "nur" folgendes machen:


    Prüfen ob die 001.vdr Datei > 2GB ist
    wenn NEIN weitermachen wie biesher, also genindex starten
    wenn JA 001.vdr Datei mittels split -b 2000000000 001.vdr in mehrere Häppchen aufteilen , anschließend die erstellten Teile "richtig" durchnnummerieren und dann erst genindex starten.


    Soviel zur praktischen Theorie. :]


    Kannst es ja mal bei Bedarf in die einfache Praxis, sprich in Dein script, umsetzen, wenn's das brauchst ...


    Pfiade,
    Django


    :evil: Nichts ist wahr, alles ist erlaubt! :evil:


    VDR-Server: ASUS A7V8X, Duron 1.300, 256 MB, 3x 120 GB Maxtor HD, PIONEER DVR-106, Design Tower AIR Black, 40x4 LCD,
    1x TT-DVB-S V1.6, 3x DVB-S Nova, URC-7562, CentOS 5.5, VDR: 1.6.0


    TecVDR: AOPEN MK73LE-N, Duron 1.300, 256 MB, 1x 120 GB Samsung HD, Pioneer DVR-A04, Gehäusesonderbau, 1x TT-DVB-S V1.6 4MB, 1x DVB-S Nova, 1x AV-Board, SuSE 9.0, VDR: 1.3.11

  • Hi,


    Django : danke fuer das Feedback! Habs ein bischen anders gemacht, naemlich wenn groesser 2 gig in 4 Teile gesplittet, aber 8gig sollten ja fuer den Normalfall auch reichen. :)


    Anbei also die neue Version (0.0.20a).


    Aenderungen:
    - Bessere Doku
    - OSD-Messages bei Start/Ende mit Faktor
    - Resultat wird falls noetig gesplittet


    EDIT: neuere Version unten


    cu
    gonz

  • Hallo


    Schau mal hier:


    http://www.vdrportal.de/board/thread.php?threadid=7625&sid=&hilight=transcode&hilightuser=0


    Villeicht könnte man sich "requant" von http://www.metakine.com/files/M2VRequantizer.tgz dadurch schenken?


    Meine Damit in den Voraussetzungen, steht ja eh schon tcmplex von (transcode).


    Kenne mich mit "Ripping" auch nicht so aus, aber warum mit mehr wenn es mit wenieger Realisierbar wäre?


    Dann wegen der einen Zeile:


    Code
    1. EXPECTEDSIZE=`echo $SIZE / $FACTOR | bc`


    Würde ich nicht auf bc zurück greifen, es giebt ein paar Light Distries die das nicht inside haben, Peanut fählt mir gerade ein, bin mir aber nicht sicher.


    Jedenfalls auch schon das Installations Script deshalb geändert, da war auch erst alles in bc.


    MFG Ronny

  • Hi, geile Sache, hoffe ich zumindest, sitze gerade am Weppad und lese, muß ich mir auf alle Fälle merken.


    Aber mal ne Frage, wie schauts mit der qualli aus? Und da ich jetzt mal an das Thema dvd erstellung ran wollte, kann man das nicht da noch mit einbauen, das die auswahl auf eine dvd geht? Nur mal so, bei einem Glas Wein fällt mir immer sowas ein...

    Gruß Martin (linuxdep)

  • Hi,


    anonymous : Danke fuers Feedback. Die neue Version (0.0.21a, anbei) versucht um das bc drumrumzuwerkeln. tcrequant hab ich mal auf die dolist gesetzt.


    linuxdep : Qualitaet ist bei 1.2 / 1.3 in meinen Augen durchaus brauchbar. Das mit der DVD-Groesse im Zusammenhang mit requant ist soweit ich weiss bereits bei vdrconvert implementiert.


    @all: Wie sich herausstellte kennt split den parameter "-d" erst in juengeren Versionen, die neue Version benoetigt diesen Parameter nicht mehr, ist also "kompatibler". Ausserdem wird das split jetzt auch geniced.


    EDIT: neuere Version unten


    cu
    gonz

  • Hallo


    Mal eine Frage, bin letztens nicht dazu gekommen, habe vor einen ganzen Packen zu "pressen".


    Es handelt sich um ca 160 Aufnahmen.


    Damits schneller geht:


    find /video/Req -type d -maxdepth 2 -mindepth 2 -exec vdr-requant.sh-wrapper 1.4 '{}' ';'


    Schickt aber meinen PC ins "Nirvana", ist zuviel für den CPU (logisch x 160).


    Deshalb könntest Du eine Prozess Kontrolle einbauen?


    Oder besser gesagt ein Limit (set max/pro session), sind die durch gehts weiter. (at hat ja auch einen "Lastabhängigen" Modus), da könnte man sich Nice vielleicht spaaren und alles in einem batch ausführen lassen?


    Weiß nicht so genau, aber 160 x in den Recordings was makieren ist zu happig.


    Falls Dir die Ideen ausgehen sollten, "press after record (vdr -r script)" wäre auch nicht übel.


    ToDO: das wäre mir wichtig:


    # - check if there is enough space in the output dir


    Könnte man vielleicht den Output komplett neu erstellen (label/name etc) lassen, nicht im selben Dir (so müßte man zig mal was löschen).


    Wie gesagt nur Anregungen, braucht ja nicht "fest" eingebaut werden, villeicht als Option.


    MFG Ronny

  • Hallo,


    Zitat

    Original von Django
    wenn JA 001.vdr Datei mittels split -b 2000000000 001.vdr in mehrere Häppchen aufteilen , anschließend die erstellten Teile "richtig" durchnnummerieren und dann erst genindex starten.


    Seid ihr ganz sicher das das mit Split geht ?


    Ich hatte das mal für mein AutoCutter ausprobiet und die aufnahme ist an der stelle "kaputt" - ich hatte das mit eine kleine aufnahme getestet und kleinere "stücke" - das sah gar nicht gut aus :(


    Ich hatte dann in der ML gefragt hier die antwort von Klaus :

    Zitat


    >> How can I split VDR recordings in a Script ?


    You need to split the files at GOP boundaries.
    You can either use the index.vdr to get that information,
    or parse the files as VDR does (see VDR/remux.c).


    Ihr macht damit eure aufnahmem kaputt an der "Schnitt-stelle" !!


    Gruß
    Viking

  • Hallo zusammen,




    Jep, das würde ich auch vermuten....


    Cheers


    Peter / doc

    Mitstreiter für VDRsync gesucht!
    Egal ob Perl Programmierer, Tester, Doku-Schreiber oder User, jede Hilfe ist willkommen. Infos hier im Board (nach vdrsync suchen) oder auf der  vdrsync-Homepage

  • Habedieehre,


    Zitat

    Original von viking
    Seid ihr ganz sicher das das mit Split geht ?


    Na sagen es wir mal so, ich hab' das bisher mit allen VHS-Copies gemacht, die mir jemand konvertierte. Das Zeug läuft ohne erkennabre Probleme durch.


    Dannn hab' ich mir noch eine 5.6GB Aufnahem mal vorgenommen, bei der ich auch nix Gegenteiliges feststellen konnte.


    Zitat

    Ihr macht damit eure aufnahmem kaputt an der "Schnitt-stelle" !!


    Wie gesagt, bis jetzt hab' ich noch keine Probleme - werd aber mal hierzu Klaus befragen, wenn er wieder zum nächsten Treffen in den Flieger kommt.


    Pfiade,
    Django


    :evil: Nichts ist wahr, alles ist erlaubt! :evil:


    VDR-Server: ASUS A7V8X, Duron 1.300, 256 MB, 3x 120 GB Maxtor HD, PIONEER DVR-106, Design Tower AIR Black, 40x4 LCD,
    1x TT-DVB-S V1.6, 3x DVB-S Nova, URC-7562, CentOS 5.5, VDR: 1.6.0


    TecVDR: AOPEN MK73LE-N, Duron 1.300, 256 MB, 1x 120 GB Samsung HD, Pioneer DVR-A04, Gehäusesonderbau, 1x TT-DVB-S V1.6 4MB, 1x DVB-S Nova, 1x AV-Board, SuSE 9.0, VDR: 1.3.11

  • Hallo Allerseits,


    anonymous : Was Du moechtest koenntest Du auch jetzt schon realisieren, in dem Du statt dem Wrapper das Script selbst benutzt. Das kehrt naemlich im Gegensatz zum Wrapper erst zurueck wenn der Job erledigt ist.
    ' make it usable for "vdr -r after" ' habe ich in die Todos aufgenommen.


    viking & Doc: Danke fuer den Hinweis! Scheinbar scheint genindex das zumindest so intelligent zu handhaben, dass ichs nicht bemerkt habe. Wuerde es reichen mittels "vdrsync.pl -script-output" die Framegrenzen rauszufinden und dort zu schneiden, oder muessen es GOP-Grenzen sein? Wenn (wie ja das Zitat von Klaus nahelegt) dies der Fall ist, waere das Splitten evtl. besser in vdrsync.pl selbst aufgehoben ? Aber seid Ihr wirklich sicher, dass es die
    Aufnahmen beschaedigt ? Denn der VDR selbst hoert auch bei exakt 2000*1024*1024 Bytes auf und beginnt ein neues 00n.vdr...


    pred8or : Je nach Faktor :) Also ich wuerde sagen auf meinem Fernseher ist ein Faktor von 1.2 mit dem blossen Auge fuer mich definitiv nicht zu erkennen.


    [edit]
    Django : Hoppla, Deinen Beitrag hab ich irgendwie uebersehen, kann Deine Beobachtungen aber durchaus bestaetigen.... ?
    [/edit]


    cu
    gonz

  • Hi,


    ich bin mal radikal geworden und habe 13 Minuten Kurzfilm in 83 Stuecke "zerhackt".


    Resultat: alle haben recht :) Subjektiv konnte ich etwa jeden 10. "Dateiwechsel" visuell erkennen. Mit A/V-Sync gab es bis auf ein einziges sehr kurzes Zirpen keinerlei Probleme (wobei 13 Minuten dafuer sicher nicht repraesentativ sind). - Ich gehe davon aus, dass halt das jeweils erwischte Frame kaputt geht.


    Morgen wird es eine neue Version geben, die


    - die Anzahl der Schnitte auf das noetigste Mass reduziert (statt einfach wenn noetig zu vierteln)
    - fast beliebige Dateigroessen als Quelle fressen wird


    Ich denke, das Resultat (bei 2 Stunden Film ein kaputtes Frame, welches nur selten bemerkt wird) ist fuer die meisten Zwecke "good-enough quality". Natuerlich lasse ich mich gerne eines besseren belehren.


    cu
    gonz

  • Zitat

    Original von gonz
    Hi,


    ich vertage das Release aufs Wochenende :)


    cu
    gonz


    Hi Gonz,


    die nächste vdrsync Version kann schneiden, und requanten, und alles gleich per mplex wieder zusammen bauen. Schliesslich soll auch noch die genindex Funktionaltität reinkommen, also alles nur eine lange Pipe werden...


    Ich habe aber immer noch nicht viel Zeit, und bei sharemarks will ich ja auch noch weitermachen, deshalb wird es ein Weilchen dauern.


    Die vdrsync-Version auf meine Platte macht (neben vielen Fehlern ;)) unter anderem jetzt eine PIPE, die


    aus vdrsync->mplex->dvdauthor


    besteht, so dass ohne temp-Files gleich eine DVD struktur erzeugt wird. Mit Single-Pass soll das auch für DIVX und (S)VCD möglich werden (via ffmpeg), da kann man natürlich auch gleich eine Queue zum shrinken einbauen.


    Was die "Zerstörung" angeht: der VDR ist sehr tolerant, was "kaputte" GOPs angeht, das muss er ja auch sein ;) Aber andere Programme sind da evt etwas empfindlicher. Das macht sich zB dann bei vdrsync bemerkbar, wenn Du nur 002.vdr konvertieren willst. Dann wird es ws aussteigen, wenn Du die Daten per split erzeugt hast. Nimmst Du jedoch das gesamte Verzeichnis als Input, dann werden alle Daten intern wieder hintereinandergehängt, und es sollte klappen.


    Cheers


    Peter / Doc

    Mitstreiter für VDRsync gesucht!
    Egal ob Perl Programmierer, Tester, Doku-Schreiber oder User, jede Hilfe ist willkommen. Infos hier im Board (nach vdrsync suchen) oder auf der  vdrsync-Homepage