E.g. if video is 1 minute, but audio is 1 hour. Make video loop throughout for 1 hour of the audio track.

I use this solution to loop image through the lenght of the audio

ffmpeg -y -loop 1 -r 6 -i image.jpg -i audio.mp3 -shortest -c:v libx264 -preset ultrafast -tune stillimage -pix_fmt yuv420p -c:a copy output.mp4

But it doesn't work for video, replacing image.jpg with video.mp4 will give error no loop found.

up vote 2 down vote accepted

For video, stream_loop option should be used.

ffmpeg -y -stream_loop -1 -i video -i audio.mp3 -fflags +shortest -max_interleave_delta 50000 -c copy output.mp4

You'll have to use a very recent version of ffmpeg (> Nov '17) as stream_loop had a bug, only recently fixed.

Since video encoding is expensive in terms of time and CPU, I've used streamcopy. For most videos, this is fine. Else, you'll have to re-encode.


Edit: another bug related to stream_loop, see workaround below

ffmpeg  -stream_loop -1 -i 1.mp4 -c copy -v 0 -f nut - | ffmpeg -thread_queue_size 10K -i - -i 1.mp3 -c copy -map 0:v -map 1:a -shortest -y out.mp4
  • Hello. This just strips the audio to the length of video, I meant opposite. Loop video throughout to the length of the audio. For now I'm using solution at video.stackexchange.com/questions/12905/… – user3108268 Feb 11 at 20:18
  • Use edited command. – Gyan Feb 12 at 5:23
  • I set the video part to video.mp4, video plays until it's original length and stops while audio keeps going, video just stills last frame throughout. – user3108268 Feb 12 at 22:16
  • Share full log. – Gyan Feb 13 at 5:05
  • 1
    See new command at end – Gyan Feb 13 at 16:04

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.