FFmpeg 的 libavfilter 是一个强大的多媒体滤镜处理框架,允许你对音视频流进行各种处理(如缩放、裁剪、格式转换、混音等)。以下是关于 AVFilter 和 Filter Graph 的核心用法。
1. 基本概念
-
AVFilter: 单个滤镜(如
scale、trim、overlay) -
AVFilterContext: 滤镜实例
-
AVFilterGraph: 滤镜图,包含多个滤镜和它们的连接关系
-
AVFilterInOut: 表示滤镜图的输入/输出
2. 基本使用流程
2.1 创建滤镜图
c
AVFilterGraph *filter_graph = avfilter_graph_alloc();
if (!filter_graph) {
// 错误处理
}
2.2 创建并添加滤镜
c
AVFilterContext *src_ctx;
AVFilterContext *sink_ctx;
AVFilter *src_filter = avfilter_get_by_name("buffer");
AVFilter *sink_filter = avfilter_get_by_name("buffersink");
// 创建源滤镜(输入)
char args[512];
snprintf(args, sizeof(args),
"video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
width, height, pix_fmt,

最低0.47元/天 解锁文章
1642

被折叠的 条评论
为什么被折叠?



