在 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 中从单个图像创建特定持续时间的视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ffmpeg 从视频中删除特定持续时间

使用 ffmpeg 将图像转换为视频

使用 FFMPEG 以最少的重新编码添加覆盖

使用ffmpeg在特定时间向wav文件添加静音[重复]

ffmpeg - 合并图像和音频时,音频会缩短

FFMPEG-将视频转换为图像