#!/bin/sh # # 2mp3 - convert MP4 video, various audio formats, and MIDI, to MP3 audio # # $Id$ # not guaranteed to be perfect for every occasion # source: https://askubuntu.com/questions/84584/converting-mp4-to-mp3 Die() { echo $0: fatal error: $@ 1>&2 exit 1 } DieIfMissing() { for f in "$@" do type "$f" >/dev/null 2>&1 || Die missing required executable: $f done } Usage() { Die Usage: $0 [-c|-v] mp4file1 > mp3file } In2MP3() { ffmpeg -i "$1" \ -vn -acodec libmp3lame -ac 2 $mp3type -ar 48000 -f mp3 -y /dev/stdout } File2MP3() # argument: $1, a filename { if file -bi "$1" | grep -q ^audio/midi then DieIfMissing timidity timidity "$1" -Ow -o - | In2MP3 - else In2MP3 "$1" fi } DieIfMissing ffmpeg DieIfMissing file variable=0 while : do case "$1" in -v) variable=1;; -c) variable=0;; -*) Usage;; *) break;; esac shift done if [ $variable = 1 ] then mp3type='-qscale:a 4' else mp3type='-ab 160k' fi if [ $# -eq 0 ] then set -- - fi for i in "$@" do if [ "$i" = - ] then DieIfMissing tempfile t=`tempfile -p 2pm3` trap "rm $t" INT QUIT EXIT cat "$i" > $t File2MP3 "$t" else File2MP3 "$i" fi done