如何使用ffmpeg缩放图像并指定每秒所需的帧数?

如何使用ffmpeg缩放图像并指定每秒所需的帧数?,ffmpeg,png,mp4,Ffmpeg,Png,Mp4,我正在使用ffmpeg将帧从mp4转换为png图像。 我想每秒20帧,我还想把图像放大到1920x1080。原来的mp4是240p(426x240) 它允许我在-vf标志后指定20 fps,但不允许缩放图像 ffmpeg -i 240_video.mp4 -vf scale=1920:1080 fps=20 240_scaled/out%d.png 如果我省略了scale=1920:1080命令,当然,我会得到426x240图像。您可以将线性过滤器与逗号链接在一起: ffmpeg -i 240

我正在使用ffmpeg将帧从mp4转换为png图像。
我想每秒20帧,我还想把图像放大到1920x1080。原来的mp4是240p(426x240)

它允许我在-vf标志后指定20 fps,但不允许缩放图像

ffmpeg -i 240_video.mp4 -vf scale=1920:1080 fps=20 240_scaled/out%d.png

如果我省略了
scale=1920:1080
命令,当然,我会得到426x240图像。

您可以将线性过滤器与逗号链接在一起:

ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080" 240_scaled/out%d.png
  • 如果输入的帧数超过20 fps,则ffmpeg将丢弃帧以转换为20 fps。如果输入小于20 fps,则ffmpeg将复制帧以转换为20 fps。如果希望所有帧保持原样,则忽略fps过滤器
  • 我使用了第一个,因为在本例中,假设输入帧速率高于20 fps,它将比第一个缩放稍微更有效和更快,因为帧将在第一个缩放之前被删除
许多玩家不喜欢输出,因为它不是4:2:0,所以您可以添加过滤器:

426x240放大,同时保持纵横比实际上为1920x1082或1917x1080,因此添加或进行补偿。或参考比例中的选项。这样你就不会得到一个奇怪的SAR
-movflags+faststart
是在进行渐进式播放时添加的

ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:-1,crop=1920:1080,setsar=1,format=yuv420p" -movflags +faststart 240_scaled/out%d.png

可以使用逗号将线性过滤器链接在一起:

ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:1080" 240_scaled/out%d.png
  • 如果输入的帧数超过20 fps,则ffmpeg将丢弃帧以转换为20 fps。如果输入小于20 fps,则ffmpeg将复制帧以转换为20 fps。如果希望所有帧保持原样,则忽略fps过滤器
  • 我使用了第一个,因为在本例中,假设输入帧速率高于20 fps,它将比第一个缩放稍微更有效和更快,因为帧将在第一个缩放之前被删除
许多玩家不喜欢输出,因为它不是4:2:0,所以您可以添加过滤器:

426x240放大,同时保持纵横比实际上为1920x1082或1917x1080,因此添加或进行补偿。或参考比例中的选项。这样你就不会得到一个奇怪的SAR
-movflags+faststart
是在进行渐进式播放时添加的

ffmpeg -i 240_video.mp4 -vf "fps=20,scale=1920:-1,crop=1920:1080,setsar=1,format=yuv420p" -movflags +faststart 240_scaled/out%d.png