Slashdot Mirror


Batch Converting Between Formats?

Yort asks: "With the Christmas season upon us, it's time to dust off the Yuletide music. However, I'm finding once again this year that I'm needing to re-rip all my CDs to fit the format-of-the-year. Ogg Vorbis for my portable, MP3 for the Tivo, WMA and AAC for sharing with co-workers... Argh! So, I've decided it's time to end the madness: Hard drives are cheap, so I'm going to rip all my music once-and-for-all to a lossless format (I'm choosing FLAC at this point), then just batch convert to whatever format I need. I know I'm hardly the first one to think of this, but I've looked around and haven't found much in the way of good OSS tools for this sort of thing. Any recommendations, or do I have to write one myself?"

4 of 94 comments (clear)

  1. just a simple frelling script. by Gadzinka · · Score: 4, Informative
    Well, I don't know about applications to recode to different formats, but I do use mp3 for transferring music to my Creative MuVo. It was just a simple script written in couple of minutes:
    #! /bin/sh

    br="96"

    if [ "$1" = "-b" ] ; then
    br="$2"
    shift;shift
    fi

    sdir=`echo "$1"|sed 's|/$||'`
    ldir=`dirname "$sdir"`
    ddir=/home/queue

    if file "$sdir" | grep -qs directory ; then
    find "$sdir" -print | while read src ; do
    dst=`echo "$src" | sed "s|$ldir|$ddir|; s/\.\([oO][gG][gG]\|[fF][lL][aA][cC]\|[mM][pP]3\)$ /.mp3/"`
    case `file -b "$src"` in
    *directory* )
    mkdir "$dst"
    ;;
    *FLAC* | *Vorbis* )
    ogg123 -d wav -f - "$src" |lame -h --abr "$br" - "$dst"
    tagcopy "$src" "$dst"
    ;;
    *MP3* )
    lame -h --abr "$br" "$src" "$dst"
    tagcopy "$src" "$dst"
    ;;
    * )
    cp "$src" "$dst"
    ;;
    esac
    done
    fi
    You have to give it full path from / and tagcopy is a simple wrapper around taglib C API to copy ID3 (or equivalent) tags between two files.

    Just use it as an example to create scripts converting to other formats.

    Robert
    --
    Bastard Operator From 193.219.28.162
  2. A summary by dasunt · · Score: 3, Informative

    Several votes for bash, and a mention of python or perl so far.

    Any scripting language will work. Check out freshmeat and sourceforge, there are several scripts available that will access the CDDB and dump the artist/track information.

    The only thing missing is a trained monkey to operate the CD drive all day. Better start searching. :)

  3. The script I use... by turnerjh · · Score: 4, Informative

    This is the script I use. Wrote it a while back for basically the same reasons -- record everything in FLAC, convert to lossy format of the week. I originally used a bash script but found it to be a bit less than robust and somewhat more difficult to extend.

    This script either takes command line args, or, if none present, reads filenames one at a time from the command line. Generally I run it via 'find -name "*.flac" | transcode' and let it DTRT. As an added bonus, it copies the id3 tags from src to dest (assuming id3cp is installed)

    http://perl.pattern.net/transcode

  4. Smart choice with FLAC! We learned the hard way! by linuxbaby · · Score: 3, Informative
    At CD Baby we used to think like the other folks here saying "Why not just use MP3?" We have over 78,000 CDs here, and we hired two people to rip them all to hi-fi MP3 (lame --preset standard).

    But then... digital distribution started last year with Apple iTunes, Napster, Rhapsody, etc. All of these companies REQUIRED that the encoded file (AAC, WMA, etc) come from the master WAV file. Ack! Screwed! 9 months of ripping down the drain!

    So... we finally realized what I was kicking myself for not realizing in the first place - and exactly what the story post mentions: hard drive storage is cheap. labor is expensive. rip the CD *once*, lossless, and NEVER have to rip it again. We wiped all our useless MP3 drives and started again: ripping all 78,000 CDs to FLAC format. Since it's a perfect digital copy of the master audio fles, and supports metadata tags, too, it's the perfect archiving format.

    VERY easy to just script-up a bulk converter. http://perl.pattern.net/transcode is a great Perl solution. I posted my audio-converter scripts here, which include the use of SOX to make 30-second audio clips (since we needed that for work).

    To all those here saying "MP3 is fine!" - you're being short sighted. In a few years there will be a newer better codec, and all your old MP3s will look as bad to your ears as your old 320x240 JPGs from 1995 look now. Go lossless. (FLAC, WAV, etc) - your future self will thank you.