MW

Tag mp3

Recent Posts

mp3dump: Rip the audio stream of a Flash video to MP3 (November 26, 2008)

UPDATE : Also check out mp3dump part 2

On some undefined occasion you might want to dump the audio stream of a flash file. This is how you do it:

  1. Get the *.flv, e.g. visit youtube with Konqueror and check /tmp for a file like FlashV5SQLt - this is your FLV.
  2. Install some dependencies: ffmpeg is required, mp3info and ecasound are optional but strongly recommended.
  3. Download the script below (it’s attached!) and save it inside your $PATH, remember how you’ve called it!
  4. I’ve saved the script inside ~/.bin which is inside my $PATH so all I have to do now is running it:

mp3dump FlashV5SQLt "Foo Bar" "All Your Base Are Belong To Us"

This would rip the audio stream of FlashV5SQLt to a file named Foo Bar - All Your Base Are Belong To Us.mp3 - with emulated stereo sound and basic MP3 tags (artist and title). Coolio!

So what does this neat-o-bash-magic look like?

Note: The script is attached below, so no copy’n’paste is required (but optionally supported :-) )

    #!/bin/bash
    #
    # Simple script to rip the audio stream of a FLV to MP3
    #
    # usage:      mp3dump INPUT.flv ARTIST TITLE
    # example:       mp3dump FlashhxSjv3 "Foo Bar" "All your Base are Belong to Us"
    # Author:        Milian Wolff
    # depends on:  ffmpeg
    #   optional:    ecasound for stereo sound emulation
    #   optional:   mp3info to write title and artist mp3 tags
     
    if [[ "$(which ffmpeg)" == "" ]]; then
     echo -e "\033[41mInstall ffmpeg or this script wont work!\033[0m"
        exit
    fi
     
    if [[ "$1" == "" || "$2" == "" || "$3" == "" || "$4" != "" ]]; then
      echo "Usage: $(basename $0) INPUT.flv ARTIST TITLE"
      exit
    fi
     
    dest="$2 - $3.mp3"
    tmpfile="/tmp/$$-$dest"
     
    echo "Destination file is: $dest"
    echo
    echo
     
    echo "generating mp3 file..."
    echo
    ffmpeg -i "$1" -f mp3 -vn -acodec copy "$dest" 1>/dev/null
    echo
    echo -e " \033[32mdone\033[0m"
    echo
     
    if [[ "$(which ecasound)" == "" ]]; then
     echo "You can optionally install ecasound to simulate stereo sound"
      echo
    else
      echo -n "simulating stereo sound..."
     
        ecasound -d:1 -X -i "$dest" -etf:8 -o "$tmpfile" 1>/dev/null
        mv "$tmpfile" "$dest"
     
     echo -e " \033[32mdone\033[0m"
       echo
    fi
     
     
    if [[ "$(which mp3info)" == "" ]]; then
      echo "You can optionally install mp3info to write basic mp3 tags automatically"
      echo
    else
      echo -n "writing basic mp3 tags..."
     
     mp3info -a "$2" -t "$3" "$dest"
     
     echo -e " \033[32mdone\033[0m"
       echo
    fi
     
    echo "Have fun with »$dest«"

continue reading...

mp3dump take two - better audio quality (April 08, 2008)

So just yesterday I’ve published a bash script which rips the audio stream of Flash Videos (*.flv) to mp3 format. It’s nice, fast and imo all-purpose. But I didn’t like the audio quality. Thus below you can find a second version of the script which is using mplayer and lame instead of ffmpeg. Usage and behaviour should be pretty much the same. Only the audio quality should be better on cost of a bit more computing.

Since it relies on the fact that the input *.flv video already uses MP3 encoding for its audio stream this might not work for every flash file! Youtube works just fine though. You can find the script after the break, it’s also attached below. For usage / installation / more information read the old article.

If you wonder why I reencode the audiodump with lame: The dumped mp3 file is considered by most (all?) audio players to be ~10x the length. A five minute video gets a 45 minute audio dumpfile. It plays fine but seeking is a mess. Reencoding fixes this. If you know an alternative which does not require reencoding or is generally faster - please drop a comment!

continue reading...