FFmpeg的scale滤镜介绍

本文详细介绍了FFmpeg滤镜的使用,特别是scale滤镜,包括滤镜的基本概念、数据结构和API函数。通过3个示例项目,展示了创建和连接滤镜的不同方法,并解释了滤镜字符串的语法。最后,讨论了不同滤镜调用方式的适用场景和复杂性。
摘要由CSDN通过智能技术生成

FFmpeg 的滤镜是一个非常强大的功能,强大跟庞大是一个意思。从另一个角度解释,FFmpeg 的滤镜其实是一个大杂烩,什么功能都有。

不要被滤镜这个词欺骗,FFmpeg 的滤镜不止可以做一些特效,加水印之类的,还可以裁剪视频时长,转换采样率,或者转换像素格式等等。

本文有代码提供给大家学习

代码压缩包里有 3个项目,分别演示了 3 种使用 滤镜函数的方法

FFmpeg 的滤镜函数,其实是比较复杂的。
跟滤镜有关的数据结构有以下:

  1. AVFilterGraph滤镜容器,里面可以有多个 滤镜上下文
  2. AVFilterInOut,滤镜链表,avfilter_graph_parse2 函数有时候会设置这个结构体,开放输入跟输出给其他的滤镜上下文来链接。
  3. AVFilterContext滤镜上下文,可以看成是滤镜的实例
  4. AVFilter,滤镜信息。

跟滤镜有关的API函数有以下:

  1. avfilter_graph_alloc,创建滤镜容器
  2. avfilter_get_by_name,根据字符串名字找出 AVFilter
  3. avfilter_graph_create_filter ,根据 AVFilter 来创建创建滤镜上下文。同时会把新创建的滤镜上下文放进去滤镜容器。
  4. avfilter_link,连接两个滤镜上下文
  5. avfilter_graph_parse2,根据 传递的字符串语法 来创建 一个 或者 多个 滤镜上下文,多个滤镜会根据语法自动连接。同时会把新创建的滤镜上下文放进去滤镜容器。
  6. avfilter_graph_config,正式打开滤镜容器。
  7. avfilter_graph_get_filter,根据名称获取 滤镜容器内部的某个 滤镜上下文
  8. av_buffersrc_add_frame_flags,往 滤镜上下文 发送一个 AVFrame,让滤镜进行处理。
  9. av_buffersink_get_frame_flags,从滤镜上下文读取已经处理好的 AVFrame

FFmpeg 里面有两个特殊滤镜,buffer 输入滤镜 跟 buffersink 输出滤镜。

一个滤镜容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值