Try creating the video from the still image using:
ffmpeg -loop_input -vframes <num_frames> -i <input_image> <output_file>
This allows you to repeat the frame as many times as you want to make a video that is not zero duration. You can also use -t <duration>
to give the length of the video in seconds instead of number of frames.
Also, the -f
argument specifies the output format, which is not image2, but is output format you want to use, like "3gp".
You can match the length of the video file up to the length of the mp3 file and then use the second command you wrote. Also, I would use -vcodec copy
in the second command so that it just copies the video data from the first step without performing a decode/encode step causing some quality to be lost.