scripts zur Berechnung von Aufnahmelängen

  • Hi,


    hat zufällig jemand schon (bash-)scripts rumliegen, die


    a) die Gesamtlänge einer Aufnahme
    b) die Länge der Aufnahme nach dem Schneiden anhand der marks.vdr
    berechnen und optional
    c) die Resultate in die summary.vdr eintragen?


    Falls ja, wäre die Veröffentlichung derselben erwünscht. ;D THX

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

    Einmal editiert, zuletzt von foobar42 ()

  • Zitat

    Original von LinKonstl
    Zu was brauchst du denn dass? Ist doch schon im Vdr intergriert.


    Um die Längen a) in VDRadmin zu bewundern und b) für die Weiterverwurstung in einem Brenn/cdlabelgenscript.

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • In xxv ist ne Funktion integriert, welche aus der index.vdr die Länge berechnet.
    Wo genau kann ich leider nicht beantworten.


    Edit:
    Ist in der Datei RECORDS.pm soweit ich das sehe

  • Die Gesamtlänge allein zu berechnen ist auch nicht das Problem; IIRC war es Doc, der irgendwo die Formel gepostet hatte: Länge index.vdr/200.

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Hi,


    das wäre auch interessant für vdrconvert. Da vdrsync in besserer Qualität schneidet als der vdr selbst, empfiehlt es sich das Schneiden durch vdrconvert erledigen zu lassen. Nachteil ist bloß, dass man nicht genau abschätzen kann, wie groß der eigentliche Film ist und wie der Requantisierungsfaktor ausfällt.


    Das Skript zur Berechnung der Länge könnte in cap.sh von vdrconvert eingebaut werden.


    --schmettow.

    VDR 1.4.0 [dvd, dvdselect, mp3ng,remote, control, graphTFT, taste, tvonscreen, streamdev-server] - FW f32623
    OpenSuse 10.0 Vanilla 2.6.15.4 - vdrconvert - Noad
    Dign HV5, Asus P4P800 deluxe, Celeron M (silent modded) - TT 1.5 - Budget-S - AVBoard 1.3 - 12" TFT
    Peripherals: Kameleon 8060 - Philips DFR-9000 - Sharp 26GA4E - Pinnacle Showcenter 1000g

  • Zitat

    Original von LinKonstl
    Bei mir zeigts in Vdradmin auch die Länge an.


    Interessant. Für einzelne Aufnahmen? Welchen VDRadmin hast du denn? Hier werkelt der amair, da hab ich entweder Tomaten auf den Augen und/oder 'ne Konfigurationsoption übersehen oder er kann's nicht.

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Ach ja, noch was: Man kann die Werte natürlich mit vdrsync -i ermitteln, aber geht's auch mit Hausmitteln?

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Hallo foobar42,



    siehe Anlage ...


    Hardy

  • Zitat

    Original von HFlor
    siehe Anlage ...


    Hi Hardy,


    danke schön für die Mühe; kleines Problem bei mir: die awk-Monster-Zeile mag offenbar nicht:


    vdr:~# sh size_cut.sh /video/%Aus_dem_Dunkel_der_Geschichte/2005-05-05.13.05.50.50.rec/
    Frames=0
    VDRLink=001.vdr
    VDRSize=0
    0:00:00.01
    0:14:51.04
    Frame=1 ValH=0 ValM=00 ValS=00 ValF=01
    Frame=22279 ValH=0 ValM=14 ValS=51 ValF=04
    FramesCut=22278
    awk: cmd. line:1: Division by zero


    EDIT: Vielleicht liegt es am busybox-awk unter LinVDR, mal auf einem anderen Rechner testen...


    Und awk sagt mir noch weniger als bashisch.


    EDIT 2:
    Offenbar ist nicht busybox (allein) Schuld:
    linux:~# sh size_cut.sh /video0/%Aus_dem_Dunkel_der_Geschichte/2005-05-05.13.05.50.50.rec/
    Frames=0
    VDRLink=001.vdr
    VDRSize=0
    0:00:00.01
    0:14:51.04
    Frame=1 ValH=0 ValM=00 ValS=00 ValF=01
    Frame=22279 ValH=0 ValM=14 ValS=51 ValF=04
    FramesCut=22278
    awk: cmd. line:1: (FILENAME=- FNR=1) fatal: division by zero attempted


    EDIT 3: Alles Folgewirkung, eine dieser Zeilen ist offenbar der Übeltäter:


    Frames=`ls -l $Index | cut -d \ -f6`
    Size=`ls -l $VDRFile | cut -d \ -f6`


    Die spuckt nicht den richtigen Wert aus -> Variable=0 und vmtl. stolpert awk darüber; schaun mer mal (nach 'nem anderen Feldtrenner...)

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

    4 Mal editiert, zuletzt von foobar42 ()

  • Hallo foobar42,


    Zitat

    Original von foobar42
    VDRSize=0


    Das ist der Übertäter, hier sollte die Gesamtgröße stehen ...


    was gibt denn bei Dir 'ls -l /aufnahme/' aus?


    aus dem ls-Kommando wird der 6. Wert (Größe bei mir) verwendet.


    Hardy


    PS: die AWK-Zeile rechnet nur ein wenig:


    Gesamtzeit aus $Frames
    Gesamtgröße ist $VDRSize
    Länge geschnitten aus $FramesCut
    Größe der geschnittenen Version aus allem $VDRSize * $FramesCut / $Frames
    Bitrate mit $VDRSize / $Frames

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

    Einmal editiert, zuletzt von HFlor ()

  • Zitat

    Original von HFlor
    was gibt denn bei Dir 'ls -l /aufnahme/' aus?


    linux:~# ls -l /video/%Aus_dem_Dunkel_der_Geschichte/2005-05-05.13.05.50.50.rec/
    total 449144
    -rw-r--r-- 1 root root 459275462 2005-05-07 11:41 001.vdr
    -rw-r--r-- 1 root root 178320 2005-05-07 11:41 index.vdr
    -rw-rw-r-- 1 root root 22 2005-05-07 11:41 marks.vdr
    -rw-rw-r-- 1 root root 171 2005-05-26 13:20 summary.vdr


    Und wenn jetzt auf Space als Feldtrenner getestet wird, ist Feld 6 immer ein anderer Wert (sieht man hier im Portal nicht, weil überflüssige Leerzeichen offenbar entfernt werden). Ich habe mir folgendes zusammengeschustert:
    Frames=`ls -l $Index | awk '/index/ { print $5 }'`
    Size=`ls -l $VDRFile | awk '/vdr/ { print $5 } '`


    Bin sicher, der awk-Befehl ist laienhaft, aber so klappt es wenigstens.

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

    Einmal editiert, zuletzt von foobar42 ()

  • Hallo foobar42,


    Zitat

    Original von foobar42
    -rw-r--r-- 1 root root 459275462 2005-05-07 11:41 001.vdr
    -rw-r--r-- 1 root root 178320 2005-05-07 11:41 index.vdr...


    sieht bei mir auch so aus ...


    Zitat

    Frames=`ls -l $Index | awk '/index/ { print $5 }'`
    Size=`ls -l $VDRFile | awk '/vdr/ { print $5 } '`


    Das geht schon so, aber an dieser Stelle ist awk etwas zu umständlich ...


    Frames=`ls -l $Index | cut -d \ -f5`


    dem cut-programm wird als feldtrenner (-d) das Leerzeichen mit dem \ maskiert übergeben, danach kommt noch ein Leerzeichen vor der Option (-f), nach dem f kommt noch die Feldnummer. Dort muß eigentlich 5 stehen, warum dort bei mir 6 steht weiß ich nicht.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Zitat

    Original von HFlor
    stehen, warum dort bei mir 6 steht weiß ich nicht.


    Hallo Hardy,


    ich vermute, weil du mit einer anderen Aufnahme getestet hast; es findet sich nämlich bei ls nicht nur ein Leerzeichen zwischen den einzelnen Werten, sondern spätestens nach der group-Angabe unterschiedlich viele.


    Nächstes Problem:
    vdr:~# ./size_cut.sh /video/Helena_von_Troja_Teil_2/2005-05-16.14.55.50.50.rec/
    Frames=187489
    VDRLink=001.vdr
    VDRLink=002.vdr
    VDRLink=003.vdr
    VDRLink=004.vdr
    VDRLink=005.vdr
    VDRSize=3081053
    0:09:17.20
    0:35:58.03
    0:43:31.18
    1:02:08.17
    1:08:04.09
    1:31:17.08
    1:37:20.17
    1:44:15.10
    ./size_cut.sh: line 34: let: Frame = ((0 * 60 + 09: value too great for base (error token is "09")
    Frame= ValH=0 ValM=09 ValS=17 ValF=20
    Frame=53953 ValH=0 ValM=35 ValS=58 ValF=03
    ./size_cut.sh: line 41: let: FramesCut += 53953 - : syntax error: operand expected (error token is " ")
    Frame=65293 ValH=0 ValM=43 ValS=31 ValF=18
    ./size_cut.sh: line 34: let: Frame = ((1 * 60 + 02) * 60 + 08: value too great for base (error token is "08")
    Frame=65293 ValH=1 ValM=02 ValS=08 ValF=17
    ./size_cut.sh: line 34: let: Frame = ((1 * 60 + 08: value too great for base (error token is "08")
    Frame=65293 ValH=1 ValM=08 ValS=04 ValF=09
    ./size_cut.sh: line 34: let: Frame = ((1 * 60 + 31) * 60 + 17) * 25 + 08: value too great for base (error token is "08")
    Frame=65293 ValH=1 ValM=31 ValS=17 ValF=08
    Frame=146017 ValH=1 ValM=37 ValS=20 ValF=17
    Frame=156385 ValH=1 ValM=44 ValS=15 ValF=10
    FramesCut=10368



    Länge gesamt 02:04:59.15 Größe 3008.84 MB
    geschnitten 00:06:54.19 Größe 166.39 MB (ca.)
    Datenrate 3.21 MBit/sek


    Die let-Zeile ...

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Zitat

    Original von foobar42
    ./size_cut.sh: line 34: let: Frame = ((0 * 60 + 09: value too great for base (error token is "09")


    Nun denn, dazu findet sich bei google genug; also vorläufige Lösung:


    Frame=`echo "(($ValH * 60 + $ValM) * 60 + $ValS) * 25 + $ValF"|bc`


    Lösung gut genug oder gibt es Alternativen?

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Hallo foobar42,


    Zitat

    Original von foobar42
    Frame=`echo "(($ValH * 60 + $ValM) * 60 + $ValS) * 25 + $ValF"|bc`


    Lösung gut genug oder gibt es Alternativen?


    Selbsts eine Aufname mit einem Tag Länge würde nur 2,1 Millonen Frames haben, warum passt das nicht in den Datentype?


    Da müssen wir mal knebb fragen, er ist "RedHatCertifiedEngineer + SuseCertifiedLinuxTrainer".


    Ich habe da auch noch nicht so viel Erfahrung. In 18 Monaten habe ich zwar schon viel gelernt, aber es gibt noch einiges ...


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!


  • Hallo Hardy


    vorerst reicht ein "value too great for base" und "let" als Suchbegriff in google.groups. Demzufolge mag let u.a. keine 9

    LG
    Jochen


    Rpi4 headless mit MLD 5.4 als Server via satip-Plugin hinter einem Telestar Digibit Twin, ein Rpi3 als Streamdev-Client mit MLD 5.4

    Rpi3 auch hinter Telestar Digibit Twin und mit MLD 5.4

  • Hallo foobar42,


    Zitat

    Original von foobar42
    vorerst reicht ein "value too great for base" und "let" als Suchbegriff in google.groups. Demzufolge mag let u.a. keine 9


    Da muß die Vornull entfernt werden, alle Zahlen, die mit '0' beginnen, werden oktal gesehen. Und dort geht es nur von 0 bis 7.


    Wer hat nur die okalen Zahlen als erster verwendet, und warum sind die heute immer noch da?


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

Jetzt mitmachen!

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