创建任意长度的视频

创建任意长度的视频

我正在尝试创建一个视频文件,可以是.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 数字会太大

相关内容