It's probably not the simplest method, but since I like to have control over what I do, here's how I'd do it:
Install avisynth (for creating video and applying filters if needed),
x264 to actually encode the video(assuming your video is using that codec. If not, use an encoder that fits your video),
some photo editor software(I like Gimp)
and My MP4Box GUI(a GUI version of the best mp4 joiner).
Resize your picture to the same size as the video and pad either the width or the height with black to keep the aspect ration of the picture.
For example, if the video is 720x416 and the cover 800x536, resize the cover to 621x416 and pad the width with black on both sides to achieve 720x416.
Load you image in an avisynth script(create a .txt file and rename it .avs) like so:
Code:
Vid = ImageSource("full_path_to_your_cover_picture", end=150, fps=29.97)
Aud = BlankClip(Vid, audio_rate=48000)
AudioDub(Vid, Aud)
Where fps=the framerate of your video
and end=the number of time to repeat the image
so 150 * 29.97 = roughly 5 seconds
Encode the video using x264 by opening a cmd box, and typing the following:
Code:
"full_path_to_x264.exe" --crf 18 --preset veryslow --output output_video_name_for_the_picture.mp4 name_of_avs_script.avs
Create a small sound clip that fits the length you show the image on screen in the same format somehow. I've never done this and my first attempt at creating an empty sound file with avisynth and lame to encode it failed miserably. Since I don't want to waste more time on this, I'll let you figure it out.
Mux the image video and the audio with MP4Box: In the mux tab, press add, choose the image video, then press add again and choose the audio, select save as, enter a name and then press mux.
Join the 2 clips by going into the Join tab, press add, load the image video clip with sound, press add again, load the second clip, press save as, enter a name for the final video and then press join.
If you don't add audio to the image clip, the audio from the second clip will start at the same time as the image clip so it will be out of sync with the video.