I want to create a video of three images and three audio files but the duration time of each image should be the time of the corresponding audio file.
Lets say I have three images image_0.png, image_1.png and image_2.png and three audio files audio_0.mp3 (length 10 seconds) , audio_1.mp3 (length 15 seconds), audio_2.mp3 (length 12 seconds).
I want to create a video showing first image_0.png with audio_0.mp3 for 10 seconds, then image_1.png with audio_1.mp3 for 15 seconds and in the end image_2.png with audio_2.mp3 for 12 seconds.
I tried to make this with avconv. I tried different variations of -i commands
avconv -i imageInputFile.png -i audioInputFile.mp3 -c copy output.avi
nothing worked. Indeed, I could make for each image+audio a single avi video, but I failed concatenating all single avi files... Besides this is not the best way I think because of quality loss.
How would you do this? Is this even possible with avconv?
first concatenate all your .mp3 in one single .mp3 then name your .png something like
img01.png, img02.png ... imgxx.png
then try:
obviously replace
lavc
with your preferred codec and1
with a reasonable value to fit the frames in your audio track.some may argue that it's stupid to recompress audio again and I can use
-oac copy
instead but when converting from multiple sources it can cause issues.this command creates a 25 fps video stream with 15-26 duplicated frames per second, if you remove
-ofps 25
you will avoid duplicate frames but some decoders could hang, especially when seeking