使用ffmpeg从具有ken-burns效果的图像生成视频


Generate video from images with ken burns effect using ffmpeg

我正在尝试从图像生成视频。

以下代码生成视频,每3秒1帧。

     exec("ffmpeg -f image2 -r 1/3 -loop_input -shortest -y  -i tmp/image%3d.jpg -i tmp/ag1.mp3 -target ntsc-dvd -s 1280x720 tmp/video.mwv");

我想把ken烧伤效果应用到它上,我搜索了很多,但找不到任何解决方案。

有人能帮我吗?如果能提供任何代码片段,将不胜感激。

我认为单用ffmpeg无法做到这一点。我过去曾用一种名为diascope的工具来完成这项工作。我从来没有听说过它,但它制作了一些我见过的最好的幻灯片,因为你可以使用像肯·伯恩斯这样的效果。它确实在最后一步使用了ffmpeg来对视频进行实际编码。

看看这些例子,应该很简单。

FFMPEGhttps://ffmpeg.org/ffmpeg-filters.html#zoompan

目前,它确实存在一些视频运动不稳定的问题。

它可以通过Imagemagik和ffmpeg的组合来完成。使用图像魔术制作一系列裁剪后的图像,并使用ffmpeg将该系列图像转换为电影。使用ImageMagick裁剪图像应该沿着一个或多个向量进行,以创建创建运动的"帧"。当然,所有图像都必须具有相同的外部尺寸(使用ImageMagick很容易做到),但您可以使用ImageMagink中的裁剪和缩放工具创建各种逐帧运动。

Ken Burns可以与Mencoder一起应用。请参见使用MEncoder进行编码。PhotoFilmstrip程序就像Mencoder的GUI。它基于Python,因此可用于Windows(甚至作为可移植版本)和Linux。对于Linux,还有image2mpeg,但我还没有尝试过。

在Windows下,免费的微软MovieMaker也可以应用Ken Burns。尽管它只创建WMV文件MovieMakers GUI IMHO比PhotoFilmStrips要好得多。然而,银弹是在批处理或shell脚本中应用MEncoder。作为开始搜索"mencoder语法"。

使用ImageMagick(版本6.x)尝试此脚本

#!/bin/bash
for (( resizepercent=100; resizepercent<=200; resizepercent+=10 ))
do
    convert bird.jpg -resize $resizepercent% -gravity Center -crop 1800x1900+0+0 bird$resizepercent.png
done

你必须用";1800x1900";通过您的目标输出维度+0+0";通过您想要缩放到的其他偏移量。

也许有些读者知道这个剧本的性能是否可以提高!?我实现它的方式Imagemagik必须读取输入文件";bird.jpg";每个循环。也许有一种方法可以告诉Imagemagik只读取输入文件一次,并对其进行多次缩放?

是的,你可以

只需使用这个:

ffmpeg -loop 1 -i photo.jpg -y -filter_complex "[0]scale=1200:-2,setsar=1:1[out];[out]crop=1200:670[out];[out]scale=8000:-1,zoompan=z='zoom+0.001':x=iw/2-(iw/zoom/2):y=0:d=250:s=1200x670:fps=25[out]" -acodec aac -vcodec libx264 -map [out] -map 0:a? -pix_fmt yuv420p -r 25 -t 10 video.mp4

摘自:https://www.bannerbear.com/blog/how-to-do-a-ken-burns-style-effect-with-ffmpeg/