FFmpeg 音频滤镜处理全流程(工程级流程图)

目录

一、一句话总览

二、滤镜处理流程总图

三、阶段 0:Graph 构造期(你代码里现在的部分)

做了什么?

四、阶段 1:avfilter_graph_config(滤镜真正“活”的时刻)

内部发生 3 件大事(重点)

① 格式协商(Format Negotiation)

② 采样率 / layout 对齐

③ 分配内部 FIFO / resample context

五、阶段 2:运行期 —— 你 push 一帧,它 pull 一帧

标准调用(你现在的代码位置)

六、滤镜内部“真实处理流水线”

当你 av_buffersrc_add_frame():

七、为什么“加一帧,拿一帧”有时拿不到?

正常现象

八、flush(结束必做,不然最后 0.2s 永远丢)

九、滤镜处理流程“三定律”

定律 1:push ≠ 立刻处理

定律 2:帧是引用,不是拷贝

定律 3:graph_config 前是字符串,后是契约

十、完整最小处理流程

十一、一句话总结


觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。
由于能力水平有限,文中的错误或不严谨的地方在所难免,还请批评指正。

摘要:
很多人以为 av_buffersrc_add_frame()是“调用滤镜函数”,其实 FFmpeg 音频滤镜是 声明式有向图 + push/pull 调度模型,而不是线性流水线。

本文拆解滤镜完整生命周期:

构造期abuffer → volume → aformat → sink只拼图不跑数据);

协商期avfilter_graph_config()时 abuffer 定契约、aformat 给候选、graph 自动算交集并插 resample);

运行期(你 push frame 只是塞 FIFO,filter 内部 ref 引用、攒 buffer、延迟输出,sink 才真正吐帧);

flush 期(不 close buffersrc 永远丢尾巴)。

重点澄清:push ≠ 立刻处理,volume 无延迟、aformat / aresample 必攒帧,所有节点默认共享 AVBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值