Unir audio e imagen -> Generar como video usando FFmpeg

Unir audio e imagen -> Generar como video usando FFmpeg

Tengo 1 imagen (jpg) y 1 archivo de audio (MP3) y me gustaría generarlo como un archivo de video (digamos AVI, por ejemplo).

¿Alguien sabe cómo usar FFMPEG para unir los dos? Me gustaría mostrar la imagen mientras dure el audio.

¿Alguien tiene alguna idea?

Respuesta1

Si estás en Windows, también puedes hacerlo en Windows Movie Maker... si necesitas instrucciones, deja un comentario.

Para FFmpeg usa esto

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 es el número de fotogramas que se deben repetir para tener una imagen continua para todo el archivo audio.mp3.

    Ej: durante 8 minutos y 3 segundos ((8m x 60s + 3s) x 30fps = 14490 vf)

Recurso deaquí

Respuesta2

Hay una forma mucho más sencilla que las sugeridas aquí, que no requiere calcular el número de fotogramas ni introducir la longitud de archivos individuales (especialmente mejor para el procesamiento por lotes). Con una versión reciente de ffmpeg, puede usar la -shortestopció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 utiliza 2 fotogramas por segundo para la imagen/vídeo, lo que debería estar bien, pero puedes configurarlo en 25 más estándar si lo deseas.

Respuesta3

subanki casi acertó. La línea de comando de trabajo es la siguiente;

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

sobrescribir archivos de salida sin preguntar

-bucle 1

La opción '-loop_input' está en desuso. Utilice -loop 1. Consultedocumentación ffmpeg.

-i

archivo(s) de entrada

-r

Cuadros por segundo
También podría expresarse como: -r 30000/1001, lo que da un fps de 29,97 nnn

-b:v

bitrate de vídeo; cuanto mayor sea el número, mejor será la calidad y mayor será el tamaño del archivo.

-vframes

Como se explicó anteriormente; tome el tiempo total de su archivo de audio en segundos (por ejemplo, 00:02:41 (2 minutos 41 segundos) equivale a 161 segundos totales (2 x 60) + 41). Luego multiplique el total de segundos por los fotogramas por segundo que especificó con -r (por ejemplo, 161 x 30 = 4830).

-vframes se puede reemplazar con -t 161 (-t registro de duración o transcodificación de segundos de “duración” de audio/vídeo)

-acodec

Utilice el códec de audio correcto para el tipo de archivo que está creando. Para .mp4 debería ser un formato AAC. El códec libvo_aacenc era el códec de codificación correcto para mi sistema Windows 7.

-ab

tasa de bits de audio

resultado.mp4

Este es el nombre del archivo de salida. Puede ser cualquier nombre de archivo legal para su sistema. La extensión ayudará a ffmpeg a determinar el códec de video adecuado si no especifica uno usando -vcodec.

Respuesta4

DescargarVirtualDub, entonces haz esto:

  1. Abra la imagen como abriría un archivo de vídeo normal.

  2. Calcule la duración del audio en segundos y redondee al segundo entero más cercano (por ejemplo, 78,34 segundos se convierten en 79 segundos). Este valor se llama x de ahora en adelante.

  3. Vaya a "vídeo > velocidad de cuadros", seleccione "cambiar a velocidad de cuadros (fps)" e ingrese "1/x" como valor. Además, si desea tener una velocidad de cuadros normal en el archivo resultante, como 25 fps, seleccione "Convertir a fps" e ingrese la velocidad de cuadros deseada allí.

  4. Selecciona "vídeo > compresión" y elige tu sabor favorito. Puede ser que necesites ajustar el tamaño de la imagen con el filtro de cambio de tamaño.

  5. Vaya a "audio > audio de otro archivo" y seleccione su audio allí. Si es necesario, seleccione una compresión para el audio.

  6. Guarda el archivo.

Fuente:stephanv

información relacionada