【问题标题】:ffmpeg using an expression for tile filterffmpeg 使用平铺过滤器的表达式
【发布时间】:2015-06-21 20:09:14
【问题描述】:

有没有办法为 ffmpeg 的 'tile' 过滤器提供表达式?我已经尝试了所有我能想到的使用不同转义字符和引号的组合,但它不会接受除了像“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 可以不接受表达式吗?还是我应该尝试某种连接功能?

【问题讨论】:

    标签: filter ffmpeg tile


    【解决方案1】:

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

    如果您想根据帧数进行计算,您可能必须从输出中提取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 调整框架大小以适应 120 像素高度,并自动调整宽度以保持正确的纵横比。
      • tile=100x1 将捕获的帧布局到此网格中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多