Hay una manera mucho más simple que las sugeridas aquí, que no requiere calcular la cantidad de fotogramas o ingresar la longitud de los archivos individuales (especialmente mejor para el procesamiento por lotes). Con una versión reciente de ffmpeg, puede usar la -shortest
opción, que detiene la codificación cuando finaliza la secuencia más corta, en este caso, input.mp3 (dado que la imagen se repetirá para siempre, tiene una longitud infinita):
ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4
Esto usa 2 cuadros por segundo para la imagen / video, lo cual debería estar bien, pero puede configurarlo en un 25 más estándar si lo desea.