ffmpeg - libavfilter - 使用 avfilter_graph_parse_ptr 重新配置过滤器图返回 -22
问题描述
我正在使用transcode.c
ffmpeg 示例中的示例,它按预期工作。它用于avfilter_graph_parse_ptr
设置过滤器图并且工作正常。
但是,我需要动态更改过滤器图并且avfilter_graph_parse_ptr
失败。它返回-22。我不确定这是否是一个有效的操作(重新配置)?如果可能,它是否需要超过avfilter_graph_parse_ptr
和avfilter_graph_parse_ptr
?libavfilter 文档没有说明重新配置或重置现有图形。
我可以创建一个新图表,但我会避免它,因为它会影响现有的缓冲区。
感谢您的见解。
解决方案
根据我的经验,您无法动态重新配置过滤器图。我猜这个设计只是“静态的”,因为一旦你构建了它,你就不应该改变它。
你有两个选择。一种是完全破坏图形并重新创建它。
另一种选择是(如果您使用 C++)在它自己的类中封装一个过滤器,每个类都有一个图。然后,您将有一个队列或列表,您可以在其中添加过滤器,并且每次都将帧通过它们。没有太多性能损失,可能只是您将使用更多内存和编写更多代码。这是我顺便采取的方法,它有效
推荐阅读
- python - 对象没有属性“btn”
- ruby-on-rails - 使用 Rails 5 和 ActiveAdmin 进行 Google 分析
- metadata - -I 有什么区别。和 Perl6 中的 -Ilib?
- shell - 查找和替换字符串并在更改时打印文件目录
- javascript - 标题背景未显示在 Github 站点上,在本地主机上工作正常
- google-chrome-extension - 访问 Chrome Web Store 许可 API 时出现后端错误 500
- typescript - 是否可以在打字稿中重用具有泛型的重载类型
- functional-programming - writer monad 和 list writer monad 有什么区别
- php - Laravel:视图中不存在方法
- python - 如何在 google collab with GPU 上运行代码?