Por ejemplo, si el video dura 1 minuto, pero el audio dura 1 hora. Haga un bucle de video durante 1 hora de la pista de audio.
Utilizo esta solución para hacer un bucle de imagen a lo largo del 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
Pero no funciona para video, reemplazar image.jpg con video.mp4 dará error no loop found
.
Para video, se debe usar la opción stream_loop.
ffmpeg -y -stream_loop -1 -i video -i audio.mp3 -fflags +shortest -max_interleave_delta 50000 -c copy output.mp4
Tendrá que usar una versión muy reciente de ffmpeg (> noviembre de 2017) ya que stream_loop tenía un error que se solucionó recientemente.
Dado que la codificación de video es costosa en términos de tiempo y CPU, he usado streamcopy. Para la mayoría de los videos, esto está bien. De lo contrario, tendrá que volver a codificar.
Editar : otro error relacionado con stream_loop, vea la solución a continuación
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
video
parte en video.mp4, el video se reproduce hasta su duración original y se detiene mientras el audio continúa, el video solo se queda en el último cuadro.Bueno, ahora el comportamiento predeterminado del ffmpeg actual/más reciente a través de:
c:\sbin\ffmpeg.exe -i "D:\video.m4s" -i "\audio.m4s" -c:v copy -c:a copy "D:\combined.mp4"
está rellenando/en bucle el último cuadro del video hasta audio.length
=== video.length
.
Vea si esto es aceptable para usted.
Para detalles de comportamiento:
audio.length
< video.length
), entonces rellene el audio con silencio, de modo queaudio.length === video.length
audio.length
> v ideo.length
), luego rellene el video con el último cuadro de este video, de modo queaudio.length === video.length
sologusti