gpt4 book ai didi

filter - ffmpeg 使用平铺过滤器的表达式

转载 作者:行者123 更新时间:2023-12-04 22:48:40 25 4
gpt4 key购买 nike

有什么方法可以为 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

瓦片可以根本不接受表达式吗?还是我应该尝试某种连接功能?

最佳答案

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

如果您想根据帧数进行计算,您可能必须提取 nb_frames来自输出的属性ffprobe -show_streams -i "big_buck_bunny.mp4"第一的。然后,您可以执行计算并将结果插入到您的命令中,并使用正确的图 block 过滤器。

如果您正在寻找一种仅从视频中提取一定数量的帧并将它们合并到一个文件中的方法,我会推荐本网站上的教程:http://www.binpress.com/tutorial/how-to-generate-video-previews-with-ffmpeg/138

Generating a preview is just another one-liner where ffmpeg captures images and joins them into a single long film strip.

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 We don’t want to see any output. You can remove this option if you’re having any problems seeing what went wrong.
  • -i "$MOVIE" The input file.
  • -y Override any existing output file.
  • -frames 1 Tell ffmpeg that output from this command is just a single image (one frame).
  • -q:v 1 Output quality, 0 is the best.
  • -vf select= That's where all the magic happens. This is the selector function for video filter.
    • not(mod(n\,40)) Select one frame every 40 frames see the documentation.
    • scale=-1:120 Resize frames to fit 120px height, and the width is adjusted automatically to keep the correct aspect ratio.
    • tile=100x1 Layout captured frames into this grid.

关于filter - ffmpeg 使用平铺过滤器的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com