Hallo , welches tool gibt mir die Länge von wav-Dateien aus? Ich will für cdrdao mein eigenes toc-File schreiben. Es sollen verschiedene wav-Files gebrannt werden. thx Ekkard
On Son, 15 Jul 2001, Ekkard Gerlach wrote:
welches tool gibt mir die Länge von wav-Dateien aus?
Ich nehme mal an, dass du nicht die Laenge in Bytes meinst :) Dann ist wavplay -i dein Freund. Fuer die Laenge in samples: wavplay -i DATEI | sed -n '/Samples:/s/\([0-9]*\)/\1/p' Fuer die Laenge in Sekunden: RATE=`wavplay -i $DATEI | sed -n '/Hz/s/^[^0-9]*\([0-9]*\).*Hz/\1/p' SAMPLES=`wavplay -i $DATEI | sed -n '/Samples:/s/^[^0-9]*\([0-9]*\)/\1/p'` LENGTH=`echo "scale=2; $SAMPLES / $RATE" | bc`
Ich will für cdrdao mein eigenes toc-File schreiben.
Hm, da kenn ich das Format nicht... Ist das das: FILE "data.wav" 33:43:60 05:22:10 Und du willst die letzte Zahl berechnen? Dann verarbeite das LENGTH von oben weiter: MINS=`echo "$LENGTH / 60" | bc` ## scale = 0 SEKS=`echo "scale=0; ($LENGTH / 1 ) - ($MINS * 60)" | bc` ## ^^^^^^^^^^^^ => Komma abschneiden HSEK=`echo "($LENGTH % 1 * 60) / 1" | bc` ## ^^^^^^^^^^\ ^^^^\ ^^^\= Komma abschneiden ## \ \= auf 60tel umrechnen ## \= Teil vorm Komma entfernen ## Und formatiert ausgeben: printf "%02i:%02i:%02i\n" $MINS $SEKS $HSEK So wird z.B. aus: 123.39 => 02:03:23 Das ganze dann noch in ne shell-funktion verpackt: secs_to_toc_fmt() { LEN="$1" MINS=`echo "$LEN / 60" | bc` SEKS=`echo "scale=0; ($LEN / 1 ) - ($MINS * 60)" | bc` HSEK=`echo "($LEN % 1 * 60) / 1" | bc` printf "%02i:%02i:%02i\n" $MINS $SEKS $HSEK } LENGTH=123.39 ## oder eben wie oben aus $SAMPLES und $RATE berechnen secs_to_toc_fmt $LENGTH 02:03:23 Viel Spass! -dnh -- That doesn't exist. It can't be. It supposed to be something were you go to a place where food is served. They might even play music. And you don't have to work. No pagers. No phones if you want to. Buhahhahaha. Next thing they want you to believe is that NT is stable. -- Abigail in asr, on 'What's this "social life" thing?'
Hallo Ekkard, (Ich hoffe Du bist der Initiator der Mail) [schnipp]
Ich will für cdrdao mein eigenes toc-File schreiben.
Hm, da kenn ich das Format nicht...
Ist das das:
Falls Du jeweils ein (oder mehrere) komplettes WAV File mit cdrdao schreiben willst, so kannst Du die Zeiten weglassen. Einfach AUDIOFILE "/path/zum/file/data.wav" 0 fertig. Beispiel: CD_DA // global CD-TEXT data CD_TEXT { LANGUAGE_MAP { 0 : EN } LANGUAGE 0 { TITLE "Bla Bla" PERFORMER "Al Stewart" UPC_EAN "" } } // Track 1 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO // Track specific CD-TEXT data CD_TEXT { LANGUAGE 0 { TITLE "A Small Fruit Song" PERFORMER "Al Stewart" ISRC "USWFR0001234" } } AUDIOFILE "/home/wfranke/CDs/AlStewart/AlStewart-ASmallFruitSong.wav" 0 // Track 2 : : START 00:00:00 --- Werner Franke
Hallo Ekkard, * Am 15.07.2001 um 22:44 Uhr schrieb Ekkard Gerlach:
welches tool gibt mir die Länge von wav-Dateien aus?
vielleicht hilft Dir ja das folgende Script ein wenig weiter: ---[ schnipp ]--- #!/bin/bash # wavtime.sh - Bestimmt die Länge einer wav-Datei in Sekunden # (Quick & Dirty) TMPDAT=/tmp/wavplay_info.$$ if [ -z "$1" ]; then echo "USAGE: $(basename $0) file.wav" exit 1 fi wavplay -i $1 >$TMPDAT while read Zeile; do declare -a Array="($Zeile)" case ${Array[0]} in Sampling) Rate=${Array[2]};; Samples:) Samples=${Array[1]}; break;; esac done < $TMPDAT rm -f $tmpdat Dauer=$(echo "scale=2; $Samples / $Rate" | bc -l) echo $Dauer ---[ schnapp ]--- Jürgen -- Macht den Reichtum billiger! / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
participants (4)
-
David Haller
-
Ekkard Gerlach
-
Juergen Schwarting
-
Werner Franke