This is a script I made to take advantage of the ffmpeg package in linux to quickly convert an mp3 to avi using a static image. I personally use this technique for uploading my songs to YouTube. I originally found the conversion command here.
All you need is a linux distro with ffmpeg installed, a jpeg or png image, and an mp3. Note: It is highly likely other image formats, audio formats, and output video formats will work, but I have only used jpeg/png+mp3+avi and so cannot attest to results otherwise.
Usage: bash mp32avi.sh <image_file> <mp3_file> <output_file.avi>
Code (mp32avi.sh):
#!/bin/bash
FFMPEG=`which ffmpeg`
if [ "$FFMPEG" = "" ] ; then
echo "Please install ffmpeg.";
exit 0;
fi
if [ $# != 3 ] ; then
echo "Usage: $0 <image_file> <mp3_file> <output_file.avi>";
exit 0;
fi
if [ ! -f $1 ] ; then
echo "Source image '$1' not found.";
exit 0;
fi
if [ ! -f $2 ] ; then
echo "Source mp3 '$2' not found.";
exit 0;
fi
if [ -f $3 ] ; then
echo "Output file '$3' exists. Overwrite? (y/n)";
read CONFIRM
if [ "$CONFIRM" == "y" ] ; then
echo "Overwriting '$3'"
else
if [ "$CONFIRM" == "Y" ] ; then
echo "Overwriting '$3'"
else
echo "Operation canceled.";
exit 0;
fi
fi
fi
TIME=`$FFMPEG -i $2 |& grep 'Duration' | awk '{ print $2; }' | sed -e 's/,//g'`
$FFMPEG -loop_input -i $1 -i $2 -acodec copy -y -t $TIME $3
Thomas
April 17, 2010 at 10:58 pm
I’m getting audio very weak after using this script, almost muted. Any ideas?
Jeremy
April 19, 2010 at 9:34 am
I never had that particular issue, but I would check into ffmpeg to see if there is an audio volume setting and just edit the call in the script.
You might also try using a different audio format. I always use 128-bit mp3s (maybe you are too, just making sure all the bases are covered). Sorry for the delayed response — I just saw your comment.
Eduardo
November 7, 2010 at 8:01 pm
The $TIME was not being defined by the respective command from your script. I’ve used this one insted: TIME=`ffmpeg -i $2 2>&1 | grep Duration | cut -f1 -d, | cut -f2,3,4,5 -d:`
Jeremy
November 8, 2010 at 2:42 pm
Good to know … it was working for me, but I would think with differing distros, package versions, and shells, there will be a few of those. Thanks for posting …
Petr
November 23, 2011 at 6:21 am
Thanks a lot!
That was help. Cheer.