Filter ffmpeg使用用于平铺过滤器的表达式

Filter ffmpeg使用用于平铺过滤器的表达式,filter,ffmpeg,tile,Filter,Ffmpeg,Tile,有没有办法为ffmpeg的“平铺”过滤器提供一个表达式?我已经尝试过使用不同的转义字符和引号的每一种组合,但除了像“10x10”这样的显式字符串外,它不会接受任何其他内容。请参见下面的示例: ffmpeg -i "big_buck_bunny.mp4" -vf "tile=10x10" grid_%d.jpg 我希望能够做到以下几点: ffmpeg -i "big_buck_bunny.mp4" -vf "tile=expr(n*2)x10" grid_%d.jpg 其中“n”是当前帧编号。

有没有办法为ffmpeg的“平铺”过滤器提供一个表达式?我已经尝试过使用不同的转义字符和引号的每一种组合,但除了像“10x10”这样的显式字符串外,它不会接受任何其他内容。请参见下面的示例:

ffmpeg -i "big_buck_bunny.mp4" -vf "tile=10x10" grid_%d.jpg
我希望能够做到以下几点:

ffmpeg -i "big_buck_bunny.mp4" -vf "tile=expr(n*2)x10" grid_%d.jpg
其中“n”是当前帧编号。这不是我想要使用的确切表达式,但我想从一个简单的示例开始,然后我可以适应更复杂的表达式。我尝试过的每件事都会产生如下错误:

[tile @ 0x7facc1d000c0] Unable to parse option value "expr(n*2)x10" as image size

tile可以不接受表达式吗?或者我应该尝试某种连接函数吗?

我没有完全回答你的问题,但这可能有助于找到它

如果要根据帧的数量进行计算,可能必须从的输出中提取
nb_frames
属性
ffprobe-show\u streams-i“big\u buck\u bunny.mp4”
第一。然后,您可以执行计算并使用正确的平铺过滤器将结果插入到命令中

如果您想从视频中提取一定数量的帧并将其合并到一个文件中,我建议您在本网站上阅读教程:

生成预览只是ffmpeg捕获图像并将其连接到单个长胶片带中的另一个线性过程

ffmpeg-loglevelpanic-y-i“video.mp4”-第1帧-q:v1-vf“select=not(mod(n\,40)),比例=-1:120,分幅=100x1“video\u preview.jpg

  • -日志级恐慌我们不希望看到任何输出。如果您在查看出了什么问题时遇到任何问题,可以删除此选项
  • -i“$MOVIE”输入文件
  • -y覆盖任何现有的输出文件
  • -frames 1告诉ffmpeg该命令的输出只是一个图像(一帧)
  • -q:v1输出质量,0是最好的
  • -vf select=这就是所有魔法发生的地方。这是视频过滤器的选择器功能。
    • not(mod(n\,40))每40帧选择一帧参见文档
    • 缩放=-1:120调整帧大小以适应120px的高度,并自动调整宽度以保持正确的纵横比
    • 平铺=100x1将捕获的帧布局到此网格中