ffmpeg所支持的filter都有哪些

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg所支持的filter都有哪些相关的知识,希望对你有一定的参考价值。

参考技术A   AVFilter
  所有我们写的滤镜都要用一个AVFilter结构体讲给ffmpeg听。 这个结构体里描述了ffmpeg从哪个方法进入我们的滤镜。 这个结构体在libavfilter/avfilter.h里如下定义:
  
  01 typedef struct
  02
  03 char *name; ///< 滤镜名称
  04
  05 int priv_size; ///< 给滤镜分配的内存大小
  06
  07 int (*init)(AVFilterContext *ctx, const char *args, void *opaque);
  08 void (*uninit)(AVFilterContext *ctx);
  09
  10 int (*query_formats)(AVFilterContext *ctx);
  11
  12 const AVFilterPad *inputs; ///< 一系列输入 NULL terminated list of inputs. NULL if none
  13 const AVFilterPad *outputs; ///< 一系列输出 NULL terminated list of outputs. NULL if none
  14 AVFilter;
  “query_formats”方法用于设置可以接受的输入图像格式和输出的图像格式(用于滤镜链分辨哪些滤镜可以组合在一起用)。
  AVFilterPad
  这个滤镜用于描述滤镜的输入输出,在libavfilter/avfilter.h中定义如下:
  01 typedef struct AVFilterPad

  02
  03 char *name;
  04 int type;
  05
  06 int min_perms;
  07 int rej_perms;
  08
  09 void (*start_frame)(AVFilterLink *link, AVFilterPicRef *picref);
  10 AVFilterPicRef *(*get_video_buffer)(AVFilterLink *link, int perms);
  11 void (*end_frame)(AVFilterLink *link);
  12 void (*draw_slice)(AVFilterLink *link, int y, int height);
  13
  14 int (*request_frame)(AVFilterLink *link);
  15
  16 int (*config_props)(AVFilterLink *link);
  17 AVFilterPad;
  头文件里有十分具体的描述,这里大概解释如下:
  输入输出pad都可以用的元素:
name pad的名字,所有的输入pad名字不能重复,所有的输出名字不能重复;
type 此元素目前只能为“AV_PAD_VIDEO”值
config_props 链接此pad的配置方法的函数指针
  仅限输入pad使用的元素:
min_perms 接受输入需要的最小权限
rej_perms 不接受的输入权限
start_frame 一帧传入时引用的方法的函数指针
draw_slice 每个slice已经传入后引用的方法的函数指针
end_frame 一帧完整结束后引用的方法的函数指针
get_video_buffer 前一个滤镜调用,用以为一个图像请求内存
  仅限输出pad使用的元素:
request_frame 请求滤镜输出一帧

以上是关于ffmpeg所支持的filter都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg支持的扩展库有哪些

OSPF协议所支持的网络类型中都有哪些是需要选举DR和BDR的?

intel 6核心 12线程 支持虚拟化技术的CPU 都有哪些?

FFmpeg工具

latex支持的文档格式都有哪些?支持的图片格式都有哪些?有些啥编译方式?

jwplayer支持的格式都有哪些