script/program som transcoder filer fra en mappe...

alt om grafiske brukergrensesnitt (GNOME, KDE, osv.), applikasjoner tett knyttet til disse og multimedia.

script/program som transcoder filer fra en mappe...

Innleggav nicho » tir 14.02.2012 10:07

Hei,

Jeg er på utkikk etter et script etc. som gjør følgende:

- jeg har en mappe med masse musikk (alac/flac) (/tank2/beets/music)
- tar all denne musikken og transkoder med feks ffmpeg til 320 kbit AAC
- legger dette i en annen mappe (/tank2/musikkeksport) med samme mappestruktur

Jeg forlanger ikke at noen skal bruke masse tid å krefter på å lage dettr for meg, men jeg er ikke noe flink til å scripte selv, så jeg står litt fast. En kompensasjon for vel gjennomført arbeid kan diskuteres. Dette er veldig viktig for meg.

Jeg bruker FreeBSD9, inget grafisk miljø.

edit:
Jeg har funnet et script som er veldig bra, eneste problemet er at det legger mp3-filene i samme mappen som originalfilene... Jeg skulle ha fått de til å legge musikken et annet sted, samt sjekke om den allerede eksisterer som mp3 i målmappen.

Kode: Merk alt
#!/bin/
sh

# Written by Nick Welch <nick@incise.org>.  Author disclaims copyright.

# TranscodeToMP3: recursively find all files in the current directory with the
# specified extension (the only argument) and convert them to mp3, using
# mplayer to decode them, changing the extension to .mp3 in the new files'
# filenames and leaving the original files intact.

extension="$1"
threads=`cat /proc/cpuinfo | grep ^processor | wc -l`

if [ "$extension" = ".mp3" ]
then
    echo "don't do that, it'll overwrite your files"
    exit 1
fi

#i=0
#files=()
#find . -name "*$extension" | sort | while read file
#do
#    files[$i]="$file"
#    i=$(($i+1))
#done

start=`date +%s`

elapsed_time()
{
    now=`date +%s`
    elapsed=$(($now - $start))
    minutes=$(($elapsed / 60))
    seconds=$(($elapsed % 60))
    printf "%02d:%02d" $minutes $seconds
}

transcode_file()
{
    filename="$1"
    echo T+`elapsed_time`" started: $filename"

    mp3_filename="$(dirname "$filename")/$(basename "$filename" "$extension").mp3"
    pipe_filename="$(dirname "$filename")/$(basename "$filename" "$extension").pipe"

    # sanitize because mplayer interprets certain characters as having special meaning
    pipe_filename=`dirname "$pipe_filename"`/`basename "$pipe_filename" | sed 's,[^a-zA-Z0-9_./-],_,g'`

    mkfifo "$pipe_filename"

    nice ionice -c3 mplayer -really-quiet -noconsolecontrols -ao pcm:file="$pipe_filename" "$filename" 2>/dev/null &
    nice ionice -c3 lame --quiet --preset extreme "$pipe_filename" "$mp3_filename"

    rm -f "$pipe_filename"

    echo T+`elapsed_time`" finished: $filename"
}

# launch them all gradually

echo "launching $threads threads at a time..."

find . -name "*$extension" | sort | while read file
do
    while [ $#jobstates -ge $threads ]
    do
        sleep 0.2
    done
    transcode_file "$file" &
done

wait

Erfaren
Brukerens avatar
medlem i 221 måneder
 

Re: script/program som transcoder filer fra en mappe...

Innleggav oyoy » ons 15.02.2012 23:51

Denne skal du få billig, og garantert HELT uten garanti!

Prøv hva som skjer hvis du kommenterer ut
Kode: Merk alt
mp3_filename="$(dirname "$filename")/$(basename "$filename" "$extension").mp3"

og erstatter den med:
Kode: Merk alt
mp3_filename="$(dirname "$filename")/musikkeksport/$(basename "$filename" "$extension").mp3"

Brukerens avatar
medlem i 205 måneder
 


Returner til Skrivebord / Multimedia



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron