ALLE Aufnahmen Transcodieren - Script gesucht

  • Hallo zusammen


    ich suche nach einer Möglichkeit mein komplettes VDR Recordings Verzeichnis ein ein noch zu bestimmendendes Dateiformat zu Transcodieren.


    Von Hand brauche ich hier nicht anfangen -wir sprechen von ca. 22TB.


    Das ganze ist auf Linux Dateinamen Basis (also nicht FAT) und es handelt sich sowohl um aufnahmen mit dem alten VDR Format, Aufnahmen mit dem neuen Format und einige HD aufnahmen.


    Kennt jemand ein Script das so eine Aufgabe bewerkstelligen kann ?


    Mir liegt wirklich SEHR VIEL daran - die Hintergründe sind jetzt mal zweitrangig ... - daher ist mir jedes Mittel recht ...


    CU

    GTR

  • Hi,


    da sowas immer an die eigenen Bedürfnisse angepasst werden muss, wird selber schreiben wohl das sinnvollste sein.


    Aber möchtest du wirklich transcodieren oder nur den Container ändern? Wenn nur Container ändern, dann vielleicht sowas in der Art:

    Shell-Script
    1. #!/bin/bash
    2. for recording in `find /path/to/recordings/ -type f -name "*.ts"`
    3. do
    4.     path=${recording%%??}
    5.     path_new=$path"mkv"
    6.     ffmpeg -i $recording -sn -acodec copy -vcodec copy $path_new > /dev/null 2>&1
    7. done

    Mal als Beispiel mit der Annahme, dass die Aufnahmen nicht in mehrere ".ts" Files gesplittet sind und du in ".mkv" umwandeln willst.


    Wenn du wirklich transcodieren möchtest, musst du den ffmpeg Befehl noch anpassen.


    Aber Achtung: Ungetestet und ohne Garantie ;)


    Grüße,

    Alex

    Server: Supermicro X9SAE, Intel Xeon E3-1245v2, ESXi 6.5

    VDR VM: Ubuntu 16.04 LTS, 2x DD Cine S2, VDR 2.3.8

  • Ok, weil wenn du die noch alle schneiden müsstest, könnte der VDR dir die Files zu einem "*.ts" file zusammenbauen.


    Ansonsten guck mal hier. Scheint mit ffmpeg auch zu funktionieren. Musst du das Script aber natürlich dann deutlich aufwändiger schreiben.


    Ich markiere meine Aufnahmen immer manuell und lasse sie dann automatisch schneiden und in "*.mkv" Container konvertieren. Also prinzipiell funktioniert das schon...

    Server: Supermicro X9SAE, Intel Xeon E3-1245v2, ESXi 6.5

    VDR VM: Ubuntu 16.04 LTS, 2x DD Cine S2, VDR 2.3.8

  • Ich habe eine ähnliche Aktion mit meinem Script durchgeführt (Signatur)


    vdr-User-# 755 to_h264 chk_r

  • Hallo jsffm


    ich hab das schon mal ein Auge drauf geworfen - aber habs dann wieder auf die seite gelegt weil ich nicht verstanden habe wie es ohne VDR anzuwenden ist....


    So ich es verstanden habe muss das Script mit einem absoluten Pfad (zur einzelnen Aufnahme) aufgerufen werden oder liege ich hier falsch ?


    Evtl kannst du hier ein Beispiel posten wie so ein korrekter Aufruf ausschaut


    CU

  • Im Wiki sind links zum Forum, ich hoffe, die funktionieren inzwischen wieder. Dort sind die scripte als Anhang.


    Die dort gespeicherten scripte sind recht alt, aber von mir weiterentwickelt.


    vdr-User-# 755 to_h264 chk_r

  • Schau mal hier


    vdr-User-# 755 to_h264 chk_r

  • Hallo zusammen


    erstmal vielen dank an alle die hier so fleißig gepostet haben.


    Ich habe mir jetzt aus dem script von jsffmm und einem zusätzlichen kleinen Bash Script was gebastelt das meine Anforderungen schon ganz gut erfüllt.


    Es ergeben sich aktuell für mich noch 2 Punkte:


    1: Frage an Jsffm

    Kann ich irgendwo einstellen dass gesplittete Dateien (001-004.vdr nach dem transcodieren in ein File wandern sollen


    2: Frage an alle die sich mit Bash Scripts auskennen:


    Ich habe eine Variable in der der absolute Pfad zu den Aufzeichnungen steht:


    Beispiel: "/wolf/300/2009-11-30.02.48.50.99.rec"

    Oder: "/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec"


    Ich würde gerne diesen string zerlegen (nach Einzelverzeichnissen) - und immer von hinten her gesehen den 2. Teilabschnitt in einen weiteren String speichern.


    Beispiel: "/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec"

    Ergebniss sollte sein "Die_Ruhe_in_Person"


    kann mir hier jemand helfen bitte ?

  • 1: Frage an Jsffm

    Kann ich irgendwo einstellen dass gesplittete Dateien (001-004.vdr nach dem transcodieren in ein File wandern sollen

    Das steuerst Du mit join=... z.B. ffmpeg


    vdr-User-# 755 to_h264 chk_r

  • Beispiel: "/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec"

    Ergebniss sollte sein "Die_Ruhe_in_Person"

    Code
    1. s="/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec"
    2. s2=$(dirname $s)
    3. s3=$(basename $s2)
    Code
    1. + s=/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec
    2. ++ dirname /raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec
    3. + s2=/raid5/M.A.S.H./Die_Ruhe_in_Person
    4. ++ basename /raid5/M.A.S.H./Die_Ruhe_in_Person
    5. + s3=Die_Ruhe_in_Person


    vdr-User-# 755 to_h264 chk_r

  • Hi


    danke - ich sehe gerade das wird über dirname und basename geregelt ...


    ich habe hier nun noch eine Frage:

    Kann ich irgendwie noch die 2. Verzeichnissebene auslesen - also um bei unserem Beispiel zu bleiben:


    Code
    1. Bekannt:
    2. + s=/raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec
    3. ++ dirname /raid5/M.A.S.H./Die_Ruhe_in_Person/2008-02-04.17.46.50.99.rec
    4. + s2=/raid5/M.A.S.H./Die_Ruhe_in_Person
    5. ++ basename /raid5/M.A.S.H./Die_Ruhe_in_Person
    6. + s3=Die_Ruhe_in_Person
    7. Benötigt:
    8. ++Serienname= M.A.S.H.

    Hintergrund:


    ich würde gerne mit einer If then (geht sowas mit Bash??? ) Abfrage den Dateinamen so aufbauen dass wenn es eine SErienaufnahme ist - dann soll der Dateiname aus dem Namen der 2. Verzeichnisebene bestehen + basename


    Wenn es keine Serienaufnahme ist dann nur Basename ...

  • Hier würde ich eher auf die info-Datei zurückgreifen:


    Bei Serien gibt es eine S-Zeile mit dem Episodennamen.


    Ansonsten: 2 x basename + dirname = Serienname.


    vdr-User-# 755 to_h264 chk_r

  • Hi,


    Bei Serien gibt es eine S-Zeile mit dem Episodennamen

    z.B

    Code
    1. TITLE=$(grep ^T info | sed s/"T "//g)
    2. Series=$(grep ^S info | sed s/"S "//g)
    3. OUTFILE=`echo $TITLE-$Series | sed 's/ /_/g'`

    Gruss

    Wolfgang

  • Der letzte veröffentlichte script ist schon recht alt, kann sein, dass manche Sachen da noch nicht drin sind, das müsste ich überprüfen.


    Am Anfang des scripts sind Schalter, da müsste eine Anweisung "join=..." zu finden sein, statt ... würde ich da ffmpeg eintragen.


    Wenn Du z.B. mpeg2 nach h264 wandeln willst und h264 beibehalten willst, dann folgende Schalter:


    mpeg2=h264

    h264=copy


    vdr-User-# 755 to_h264 chk_r

  • hallo


    Kannst du mir hier die aktuelle Variante anhängen ?


    Ich habe jetzt einige test gemacht schaut sonst recht gut aus.


    Ich wollte nochwas fragen:


    Nach dem konvertieren gibt es 2 Verzeichnisse einmal die ursprüngliche und einmal das mit den konvertierten Dateien


    Kann das script die ursprünglichen löschen