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:
- Get the
*.flv
, e.g. visit youtube with Konqueror and check/tmp
for a file likeFlashV5SQLt
- this is your FLV. - Install some dependencies:
ffmpeg
is required,mp3info
andecasound
are optional but strongly recommended. - Download the script below (it’s attached!) and save it inside your
$PATH
, remember how you’ve called it! - 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«"