我正在尝试创建一个视频文件,可以是.mp4
或.mov
,具有特定长度,例如 59 小时。视频里面的内容无关紧要,可以是空白的。我发现了这个命令:
ffmpeg -loop 1 -i image.png -c:v libx264 -t 15 -pix_fmt yuv420p -vf scale=320:240 out.mp4
它获取图像并从该图像创建固定长度的视频。它可以工作,但需要很长时间。还有其他方法可以创建固定长度的空白视频,而且制作时间不长吗?
答案1
如果您对视频编解码器设置没有特殊要求,您可以基于一个黑帧生成视频(看color
来源):
ffmpeg -f lavfi -i color=black:duration=60:size=320x240:r=1 -c:v libx264 out.mp4
我们使用每秒一帧(r=1
),但您甚至可以更低(例如r=0.01
)在 60 秒内仅编码一帧,而不编码其他任何东西。
Gyan 建议的另一种方法应该更快:
ffmpeg -f lavfi -i color=black:size=320x240 -vf trim=end_frame=2,setpts=N*59*3600/TB -c:v libx264 -vsync 0 -video_track_timescale 100 out.mp4
这里:
trim=end_frame=2
删除除前两帧之外的所有内容setpts=N*59*3600/TB
将第一帧的时间戳设置为 0,将第二帧的时间戳设置为 59 小时(59 × 3600 秒),除以一个常数(TB)-vsync 0
让 ffmpeg 按原样使用这些时间戳,而不强制特定的帧速率(否则您会得到重复的帧)-video_track_timescale
将时间基准 (TB) 设置为 100,这是必需的,否则生成的 PTS 数字会太大