
He estado probando FFmpeg a través de todos los tutoriales que puedo encontrar en Internet y estoy un poco desconcertado sobre cómo combinar un efecto de zoom pan con aparición y desaparición gradual de una serie de imágenes.
Llegué a lo siguiente después de combinar fragmentos de ejemplos que encontré, pero parece que el resultado que obtengo es secuencial y no es lo que pensé que sería.
Se agradecería cualquier sugerencia que me indicara la dirección correcta.
ffmpeg \
-loop 1 -t 5 -i input/slideshow/img0001.jpeg
-loop 1 -t 5 -i input/slideshow/img0002.jpeg \
-loop 1 -t 5 -i input/slideshow/img0003.jpeg \
-loop 1 -t 5 -i input/slideshow/img0004.jpeg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
[1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
[2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
[3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 output/out_fade.mp4
Respuesta1
Combinando un zoom con un desvanecimiento conffmpeg
El ejemplo que dio ffmpeg
en realidad funcionó con muy pocas modificaciones (mantenerlo -loop
provocó un error de segmentación: " Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00
").
Entonces tenemos:
ffmpeg\ -t 5 -i 1.jpg\ -t 5 -i 2.jpg \ -t 5 -i 3.jpg \ -t 5 -i 4.jpg\ -filtro_complejo \ "[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1 [v0]; [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, desvanecerse=t=fuera:st=4:d=1[v1]; \ [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, desvanecerse=t=fuera:st=4:d=1[v2]; \ [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, desvanecerse=t=fuera:st=4:d=1[v3]; \ [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 ./ out_fade.mp4
Salida de ejemplo:
Calidad de la papa: ¡Necesito descubrir gif
mejor la optimización! Los artefactos y la distorsión son el resultado de intentar obtener un tamaño de archivo < 2 MB y no están presentes en la salida de video original; debería ser suficiente para darle una idea de si se ajusta a su caso de uso. Las imágenes son mías.
(adicional)Usar transiciones variadas o arbitrarias
añadido basado en comentarios
Incluso con este ejemplo mínimo, todo filtergraph
se vuelve bastante complejo rápidamente y es tedioso cambiar las cosas. Una biblioteca diferente podría funcionar mejor.
MLT / DERRETIR
Por ejemplo,MELT
para el marco MLTpodría hacer:
Melt fue desarrollado como una herramienta de prueba para el marco MLT. Se puede considerar como un potente, aunque algo oscuro, editor de vídeo multipista orientado a línea de comandos.
y se sugiere con frecuencia.
PelículaPy
Sin embargo,PelículaPy(página de GitHub) podría satisfacer mejor sus necesidades, ya que es un poco más conciso y (sugeriría) más fácil de usar, en la medida en que un editor de video de línea de comandos puede ser fácil de usar.
Probablemente le interesen más las secciones sobrecomponiendoytransiciones/efectos
Sugiero los dos anteriores basándome en mi propia experiencia al intentar hacer palanca en transiciones con ffmpeg
; Es factible y capaz de producir algunos efectos muy decentes, pero el dolor no vale la pena. El script anterior debería responder a su pregunta sobre un alejamiento continuo con un desvanecimiento de entrada/salida.