有没有办法提供“瓷砖”?用表达式过滤ffmpeg?我尝试过使用不同的转义字符和引号可以考虑的所有组合,但除了像#10; 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
可以瓦片根本不接受表达式吗?或者是否存在某种我应该尝试的连接函数?
答案 0 :(得分:2)
我没有完全回答你的问题,但这可能有助于找到它。
如果你想根据帧数进行计算,你可能需要从输出中提取nb_frames
属性。
ffprobe -show_streams -i "big_buck_bunny.mp4"
第一。然后,您可以执行计算并使用正确的切片过滤器将结果插入到命令中。
如果您正在寻找从视频中仅提取一定数量的帧并将其合并为一个文件的方法,我建议您访问此网站:http://www.binpress.com/tutorial/how-to-generate-video-previews-with-ffmpeg/138
生成预览只是另一个单行,ffmpeg捕获图像并将它们连接成一个长长的电影条。
ffmpeg -loglevel panic -y -i "video.mp4" -frames 1 -q:v 1 -vf "select=not(mod(n\,40)),scale=-1:120,tile=100x1" video_preview.jpg
- -loglevel panic 我们不希望看到任何输出。如果您在看到问题时遇到任何问题,可以删除此选项。
- -i" $ MOVIE" 输入文件。
- -y 覆盖任何现有的输出文件。
- -frames 1 告诉ffmpeg此命令的输出只是一个图像(一帧)。
- -q:v 1 输出质量,0表示最佳。
- -vf select = 这就是所有魔法发生的地方。这是视频滤镜的选择器功能。
- not(mod(n \,40))每40帧选择一帧,请参阅文档。
- scale = -1:120 调整帧大小以适应120px高度,并自动调整宽度以保持正确的宽高比。
- tile = 100x1 将捕获的帧布局到此网格中。