suche batch script zum umwandeln

  • ich betreibe erfolgreich einen vdr und zeichne hauptsächlich serien auf.


    da ich auf meinem VDR wenig platz habe, kopiere ich die fertigen Ordner einfach auf einen anderen rechner (ebenfalls linux) mit etwas mehr platz und power.


    anschließend wandele ich mittels transcode in xvid (werbung rauschneiden ist mir egal).


    ein simples:

    Zitat

    transcode -i 001.vdr -y xvid -o Folgennummer.avi


    ist für meine zwecke völlig ausreichend. was allerdings nervt, ist die blöde verzeichniswechelei beim transcodieren.


    ich hätte gerne ein simples bash-script, das als batch die verzeichnisstruktur abarbeitet.


    die Folgen liegen alle in der vdr-üblichen verzeichnisstrukturvor:

    Zitat

    /King_of_Queens/_/datum.urzeit.99.99.rec


    das script würde ich gerne im Verzeichnis "/_" starten und es sollte jeweils in die .....rec-Verzeichnisse abtauchen, 001.vdr nach dem oben genannten prinzip transcodieren und im hintergrund ausführbar sein. Natürlich sollte es eine Folge nach der anderen transcodieren, nicht mehrere gleichzeitig. so hätte ich nämlich die möglichkeit es auf mehrere serienordner anzuwenden. Meiner Erfahrung nach schafft der rechner 4 transcodier-vorgänge gleichzeitig ohne probleme.
    die folgennummer sollte immer bei 001 starten und fortlaufend mit zwei, bzw einer führenden null die folgen durchnummerieren. ich möchte, daß dieses script selbstständig feststellt, wieviele unterordner es gibt und diese abarbeitet, damit ich keine eingaben auf fragen, wie "Weiviele Folgen sollen umgewndelt werden?" o.ä. geben muß.


    da gibt's doch bestimmt ne simple möglichkeit, ich kenne mich mit scripting auf bash-ebene einfach nicht aus. Kann mir da bitte wer helfen?

  • Zitat

    Original von jagottsicher
    ich betreibe erfolgreich einen vdr und zeichne hauptsächlich serien auf.


    da ich auf meinem VDR wenig platz habe, kopiere ich die fertigen Ordner einfach auf einen anderen rechner (ebenfalls linux) mit etwas mehr platz und power.
    ...
    da gibt's doch bestimmt ne simple möglichkeit, ich kenne mich mit scripting auf bash-ebene einfach nicht aus. Kann mir da bitte wer helfen?


    Servus,


    eben dieses Problem hatte ich auch, ich hab mir ein Skript geschrieben dass direkt nach der Aufnahme diese in ein WMV bzw. XVid umwandelt und die Originalaufnahme dann löscht wenn erfolgreich konvertiert wurde. Auf meinem Athlon64 3000+ dauert das ca. 1/3 Aufnahmelänge, Encodiert wird in WMV (halbe PAL-Auflösung, 768kBit Video, 128kBit Audio) mit 96-104frames/s.


    Welche Distri setzt Du ein? Ich hab grad ein neues Mahlzeit-ISO für LinVDR + Updates erstellt, da ist die Funktion schon drin ;) Ich kann dir das Skript aber auch so zukommen lassen.
    Wenn es unbedingt auf einem anderen Rechner passieren soll musst Du nur alle Verzeichnisse mit .rec im Namen suchen, das geht z.B. so:


    EDIT: Ich gehe mal davon aus dass Du pro Folge nur eine 001.vdr hast, King of Queens dauert ja nicht so lange ;)

    Bash
    #!/bin/bash
    
    
    for FOLGE in `find /video0/King_of_Queens/ -name 001.vdr`; do
      FILENAME=`dirname $FOLGE`
      FILENAME=`basename $FILENAME`
      transcode -i $FOLGE -y xvid -o $FILENAME\.avi
    done


    Das sucht alle 001.vdr im Verzeichnis /video0/King_of_Queens (evtl noch anpassen) und Konvertiert die Dateien zu einem Avi. Der Avi-Name ist dann das Aufnahmedatum der jeweiligen Folge, somit wird nichts überschrieben und die Avis sind noch Zuordnunsfähig ;) Das Skript kannst Du von jedem Verzeichnis aus aufrufen, es hat ja eine feste Angabe im find. Wenn man noch ein bisserl dran rumschraubt kann man auch noch als Parameter das Startverzeichnis und das Verzeichnis für die Ausgabe der AVIs übergeben... Wenn Bedarf besteht kannst Dich ja mal kurz melden.


    cu
    Markus

  • Danke schon mal. das script sieht sehr vielversprechend aus. Die Idee mit dem Dir und Filename finde ich gut!


    nicht "ganz so toll" ist es absolute Pfade zu benutzen, aber ok:
    hier meine umsetzung:


    ich habe das ganze einfach als King_umwandeln.sh abgespeichert und mit ./King_umwandeln.sh an der Konsole aufgerufen


    das ursprüngliche Script konnte nicht funzen, weil mein Pfad leider ein Leerzeichen enthält, also habe ich es einfach mal mit " versehen. An der Konsole funzt "find" so und liefert eine Liste aller "001.vdr-Dateien mit Pfad zurück.


    Startet man das obige Script aber, dauerts nen Moment und dann liefert transcode die Fehlermeldung:


    [transcode] critical: invalid filename or host "find"


    offenbar wird "find" nicht als shell-Befehl interpretiert. warum?

  • Du verwechselst ` mit ' und find herum.


    falsch:


    for FOLGE in 'find "/daten/Zum Gucken/Filme/Aufnahmen/King_of_Queens/" -name 001.vdr'; do


    richtig:


    for FOLGE in `find "/daten/Zum Gucken/Filme/Aufnahmen/King_of_Queens/" -name 001.vdr`; do


    Selbiges gilt auch für die beiden nächsten Zeilen

  • Zitat

    Original von jagottsicher
    Danke schon mal. das script sieht sehr vielversprechend aus. Die Idee mit dem Dir und Filename finde ich gut!


    nicht "ganz so toll" ist es absolute Pfade zu benutzen, aber ok:


    Dann ersetze den Pfad mit ".", dann sucht find ab dem aktuellen Verzeichnis. Oder (Variabler):


    Jetzt kannst Du dem Skript einen absoluten Pfad übergeben oder eben gar nichts. Bei gar nichts wird ab dem aktuellen Verzeichnis gesucht.


    cu
    markus

  • jupps, danke.


    ´, ` und ' aber auch " verwechsele ich immer gerne. :)


    zum test habe ich jetzt mal "Zum Gucken" in "Zum_Gucken" umbenannt.


    Jetzt läufts erfolgreich. ich kann das script doch mit hinten angestelltem & im hintergrund laufen lassen, oder?


    die Abwandlung mit den relativen Pfaden ist auch toll, werde ich wohl nach einem Testlauf so einsetzen.


    Danke nochmal an alle an diesen Thread beteiligten. jetzt wird erstmal transcodiert, bis der arzt kommt.

Jetzt mitmachen!

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