在 ffmpeg 中从单个图像创建特定持续时间的视频
Posted
技术标签:
【中文标题】在 ffmpeg 中从单个图像创建特定持续时间的视频【英文标题】:Creating a video from a single image for a specific duration in ffmpeg 【发布时间】:2014-11-11 12:50:52 【问题描述】:如何使用 ffmpeg 使用单个图像 (image1.png) 以特定分辨率生成持续 15 秒的电影,因此当我播放视频时,图像将在屏幕上显示 15 秒。
【问题讨论】:
谷歌搜索了很多,但只找到了与从一组图像制作视频相关的问题。对此问题 +1! 【参考方案1】:ffmpeg -loop 1 -i image.png -c:v libx264 -t 15 -pix_fmt yuv420p -vf scale=320:240 out.mp4
-t 15 使其长达 15 秒。
-vf scale=320:240 设置
宽度/高度。
确保使用最新的 ffmpeg 版本,例如http://johnvansickle.com/ffmpeg/
【讨论】:
@YanKingYin libx264 是一个非 GPL 库,可能会丢失。如果你想安装它,你可以这样做(在 mac 上使用 mac 端口):'port install ffmpeg +nonfree' 它回答了这个问题,但我不喜欢在命令中使用所有这些多余的添加。 @joey 我也没有,特别是因为 OP 没有要求任何具体的内容。您想从一张照片制作视频并且根本不关心任何细节?ffmpeg -loop 1 -i image.png -t 5 out.mp4
这很棒,但是...它需要很长时间并且融化我的 CPU 才能根据单个 720p PNG 图像生成 40 分钟的视频。有没有办法加快速度?只要压缩在几 GB 以下,压缩就无关紧要。
请注意,如果您需要指定帧速率(例如,您想将其与现有视频连接并需要它们匹配),您可以添加例如-r 30
输出前指定 30 FPS【参考方案2】:
发现这样更快:
ffmpeg -framerate 1/10 -i DJI_0024.JPG -c:v libx264 -t 10 -pix_fmt yuv420p -vf scale=320:240 out.mp4
-t 10 使视频长度为 10 秒,并设置 -framerate 1/10。帧率除数应与 -t 的参数相同。 这使我可以在不到一秒的时间内将高分辨率的 jpeg 转换为视频,而另一个答案大约需要 40 秒。 生成的文件大小也变得略小。从 3.38MB 到 3.17MB
【讨论】:
以上是关于在 ffmpeg 中从单个图像创建特定持续时间的视频的主要内容,如果未能解决你的问题,请参考以下文章