entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cómo generar video programáticamente a partir de fotos y audio?

Buenas a todxs,

tengo que crear un software que, partiendo de un archivo MP3 y de varios JPEG en un directorio, generen un video de la duración del audio y que vaya pasando las imágenes, preferiblemente con algún efecto de transición o mejor aun, con efectos de transición aleatorios.

Estaba pensando en hacer algo basado en scripts para GNU/Linux, que por ejemplo parta de una presentación de OpenOffice Impress y la pase a video (en ese caso, con los archivos en el directorio generaría el archivo de presentación como un temporal intermedio) pero parece que Impress no pasa a video presentaciones, ya que todo lo que encontré usa software externo, y no queda claro qué pasa con el audio.

También pensé en unsa FFMPEG o algún utilitario similar para hacer el video, pero no hallo cómo incluir los JPEG y que vayan cambiando con el tiempo.

El enfoque de usar programas de líneas de comando para hacer esto es porque me parece inviable crear un editor de video desde casi cero que pueda automatizar luego esta tarea, pero estoy abierto a opciones. e incluso a otras plataformas.

Saludos cordiales y gracias por su tiempo!

GusGarsaky comentado Ago 14, 2015

Checka Stupeflix, según su website te permite hacer vídeos a partir de imágenes, música u otros vídeos. Es privativo, pero la versión free te permite vídeos de hasta 16 minutos de duración.

Leonardo-Tadei comentado Ago 14, 2015

Gracias por el enlace.

No encuentro que tenga una API o algo que permita interactuar con él programáticamente. Tenés info al respecto?

1 Respuesta

2votos

white Puntos75600

Probando entre opción y opción me sirvió ffmpeg justo buscaba como hacer esto hace unos días para un proyecto.

con ffmpeg y imagemagick logre hacer un slideshow.

el comando:

ffmpeg -loop 1 -framerate 1/5 -i img_%d.png -i music.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -crf 0 -preset ultrafast -pix_fmt yuv420p -t 00:00:15 -shortest out.mkv

https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images

-i img_%d.png: Aca buscara todas las imagenes que coincidan con el formato img_%d.png. img_1, img_2, ...

-framerate 1/5: Seran 5 segundos para cada imagen en el video.

-t 00:00:15 limite a 15 segundos el video, esto podría calcularse con la cantidad de imagenes a tener.

Talvez haya que re-codificar el video, ya que use la opcion -preset ultrafast y -crf 0

ffmpeg -i out.mkv -vcodec libx264 -crf 23 -preset slow -pix_fmt yuv420p output.mp4

según la documentacion de ffmpeg las imagenes deben tener un tamaño igual, lo solvente con imagemagick:

mogrify -resize "1024x576^" img_*.png
convert img_1.png -resize 1024x576 -size 1024x576 xc:blue +swap -gravity center -composite img_1.png

talvez todo esto en bash pueda ser útil.


PD: para las transiciones encontré un artículo interesante:

bogotobogo ffmpeg fade in fade out
ffmpeg filters

tambíen esta la opción -filter_complex

ffmpeg filtering guide

Leonardo-Tadei comentado Ago 14, 2015

Gracias @white !

Era algo así lo que estaba buscando.

Estoy haciendo pruebas con avconv en vez de con ffmpeg por una cuestión de bibliotecas y Debian de los mantenedores de ffmpeg (algo que parece una guerra tribal).

Estoy generando el video con:

avconv -r 1/5 -i imagen%02d.jpg -i audio.mp3  out.mp4

desde la consola.

Todavía me queda ver lo de los efectos de transición y como distribuir las imágenes en el tiempo según la duración del audio.

Gracias!

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta