FFMPEG中avfilter模块 调用流程

本文详细介绍了FFMPEG中avfilter模块的调用流程,包括filter的初始化过程、特殊filter(bufferfilter和buffersinkfilter)的应用,以及如何通过filter_desc创建和配置滤镜。提供了一个初始化filter的示例和滤镜处理的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FFMPEG中avfilter模块 调用流程


前言

视频拼接

一、avfilter的调用流程图

在这里插入图片描述

二、filter的初始化

在这里插入图片描述

./ffmpeg -buffer_size 1024000 -i udp://@224.1.1.3:20000  -i udp://@224.1.1.3:20000 -filter_complex "[0:v]crop=900:900:10:10,scale=1920:1080[v0];[1:v]crop=900:900:10:10,scale=1920:1080[v1];[v0][v1]hstack=2[out]" -pkt_size 1316  -map [out]  -f mpegts  udp://@239.255.255.250:54546

AVFilterLink对应是描述符(scare:90:90)

三、两个特殊的filter

  • 1.buffer filter (处理前中的数据放到这里)
  • 2 buffersink filter (滤镜处理完成后放到这里)

四、初始化filter的基本过程

  • 1、 创建 graph, avfilter_graph_alloc()
  • 2、buffer filter 和buffersink filter
  • 3、 分析filter描述符,并构造AVFilterGraph
  • 4、使构建好的AVFilterGraph生效

init_filter函数实现

/*
* 初始化过滤器 
*/
static int32_t init_filters(const char * filter_desc)
{
   
	int32_t ret = 0;

	
	const AVFilter * buffersrc = ::avfilter_get_by_name("buffer");
	const AVFilter*  buffersink = ::avfilter_get_by_name("buffersink");
	AVFilterInOut * inputs = ::avfilter_inout_alloc();
	AVFilterInOut*  outputs = ::avfilter_inout_alloc();
	if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值