【发布时间】:2019-03-12 01:40:43
【问题描述】:
我正在使用 libavfilter C API 来缩放我的视频。
我开始阅读与 libavfilter 相关的文档,结果卡在Filtergraph-description。
我不懂术语“过滤垫”。在整个文档中,我遇到了这些术语,例如过滤器输入板和输出板。
如果有人以简单的方式解释过滤器垫,那将是非常可观的。也请分享任何与 libavfilter C API 示例相关的文档或链接。
【问题讨论】:
我正在使用 libavfilter C API 来缩放我的视频。
我开始阅读与 libavfilter 相关的文档,结果卡在Filtergraph-description。
我不懂术语“过滤垫”。在整个文档中,我遇到了这些术语,例如过滤器输入板和输出板。
如果有人以简单的方式解释过滤器垫,那将是非常可观的。也请分享任何与 libavfilter C API 示例相关的文档或链接。
【问题讨论】:
pad (pæd)
猫、狗等的脚垫状肉质垫底
在过滤上下文中使用“pad”这个词时,我从不喜欢这个词,我不知道为什么要使用这个词。把它换成“节点”这个词可能会更容易理解。
这可以用graph2dot 工具直观地表示:
在此示例中,拆分过滤器会生成两个相同的视频副本。一个副本被翻转,然后 hstack 过滤器将它们并排堆叠以创建输出。
每个过滤器都是链接的,每个链接都连接到一个输入“节点”(pad)和一个输出“节点”(pad)。
如果您曾经使用过使用 node graph architecture 的软件,例如 Nuke 或不幸停产的 Apple Shake,这可能更有意义。
没有输入焊盘的过滤器称为“源”,没有输出焊盘的过滤器称为“接收器”。源过滤器示例包括 testsrc2、color 和 sine。这些过滤器无需输入即可自行生成视频或音频,因此无需输入板。输出视频测试模式的示例,3 秒,1280x720:
ffmpeg -f lavfi -i testsrc2=d=3:s=1280x720 output.mp4
接收器对大多数用户来说用处不大。一种用途是测试复杂的过滤器图。如果您有一个想要暂时忽略的过滤器链,那么您可以将其终止到一个接收器中,例如anullsink。接收器没有输出。这有点像使用/dev/null,如果你熟悉的话。
【讨论】: