如何向ffmpeg库添加新过滤器

时间:2017-03-02 18:35:31

标签: c ffmpeg static-libraries

我正在尝试为FFmpeg库添加功能。问题是,在开发人员指南中,只有关于如何执行此操作的一般说明。我知道当我想向ffmpeg添加内容时,我需要注册新功能并重建库,以便我可以这样调用它:

ffmpeg -i input.avi -vf "myfilter" out.avi

我不想在官方做出贡献。我想尝试创建额外的功能并测试它。问题是 - 是否有基本结构准备就绪的scelet文件,你只需要一个指向新帧的指针并进行处理?某些方向或任何方面,因为源文件有点难以理解,而不了解其调用的内部函数。

2 个答案:

答案 0 :(得分:1)

我遇到了将 transform_v1 过滤器(请参见https://www.diycode.cc/projects/facebook/transform360上的transform 360过滤器的详细信息)添加到版本为N-91732-g1124df0的ffmpeg的问题。我完全按照Writing_filters.txt做了,但是transform_v1.o没有链接?

我在libavfilter的Makefile中添加了目标文件(vf_transform_v1.o)。     OBJS-$(CONFIG_TRANSFORM_V1_FILTER)+ = vf_transform_v1.o

i检查config.h中是否存在定义CONFIG_TRANSFORM_V1_FILTER = 1。 但是,编译后仍然无法识别transform_v1。 我以一种尴尬的方式解决了这个问题,我在OBJ列表中显式添加了vf_transform_v1.o,而无需使用全局定义CONFIG_TRANSFORM_V1_FILTER进行限制:

OBJS+= vf_transform_v1.o 

答案 1 :(得分:0)

回购中的文档值得一读:ffmpeg \ doc \ writing_filters.txt

步骤是:

  1. 在以下位置添加相应的行:ffmpeg \ libavfilter \ Makefile

    OBJS-$(CONFIG_MCSCALE_CUDA_FILTER)+ = vf_mcscale_cuda.o vf_mcscale_cuda.ptx.o scale_eval.o

  2. 在以下位置添加相应的行:ffmpeg \ libacfilter \ allfilters.c

    外部AVFilter ff_vf_mcscale_cuda;

  3. (。2)中的更改直到./configure再次扫描文件以配置构建时才被识别,因此请运行Configure并在下次运行时生成过滤器。快乐的日子。