【FFMPEG】AVFilter使用流程

2023-10-26

流程图

在这里插入图片描述
核心类

AVFilterGraph ⽤于统合这整个滤波过程的结构体

AVFilter 滤波器,滤波器的实现是通过AVFilter以及位于其下的结构体/函数来维护的

AVFilterContext ⼀个滤波器实例,即使是同⼀个滤波器,但是在进⾏实际的滤波时,也会由于输⼊的参数不同⽽有不同的滤波效果,AVFilterContext就是在实际进⾏滤波时⽤于维护滤波相关信息的实体

AVFilterLink 滤波器链,作⽤主要是⽤于连接相邻的两个AVFilterContext。为了实现⼀个滤波过程,可能会需要多个滤波器协同完成,即⼀个滤波器的输出可能会是另⼀个滤波器的输⼊,AVFilterLink的作⽤是串联两个相邻的滤波器实例,形成两个滤波器之间的通道

AVFilterPad 滤波器的输⼊输出端⼝,⼀个滤波器可以有多个输⼊以及多个输出端⼝,相邻滤波器之间是通过AVFilterLink来串联的,⽽位于AVFilterLink两端的分别就是前⼀个滤波器的输出端⼝以及后⼀个滤波器的输⼊端⼝

buffersrc ⼀个特殊的滤波器,这个滤波器的作⽤就是充当整个滤波过程的⼊⼝,通过调⽤该滤波器提供的函数(如av_buffersrc_add_frame)可以把需要滤波的帧传输进⼊滤波过程。在创建该滤波器实例的时候需要提供⼀些关于所输⼊的帧的格式的必要参数(如:time_base、图像的宽⾼、图像像素格式等)

buffersink ⼀个特殊的滤波器,这个滤波器的作⽤就是充当整个滤波过程的出⼝,通过调⽤该滤波器提供的函数(如av_buffersink_get_frame)可以提取出被滤波过程滤波完成后的帧

代码流程


	//创建滤波器
	const AVFilter *buffersrc = avfilter_get_by_name("buffer");
	const AVFilter *buffersink = avfilter_get_by_name("buffersink");
	const AVFilter *myfilter = avfilter_get_by_name("myfilter");
	
	//创建滤波图
	filter_graph = avfilter_graph_alloc();
	
	//创建⽤于维护滤波器的管理类
	AVFilterContext *in_video_filter = NULL;
	AVFilterContext *out_video_filter = NULL;
	AVFilterContext *my_video_filter = NULL;
	avfilter_graph_create_filter(&in_video_filter, buffersrc, "in", args, NULL, filter_graph);
	avfilter_graph_create_filter(&out_video_filter, buffersink, "out", NULL, NULL, filter_graph);
	avfilter_graph_create_filter(&my_video_filter, myfilter, "myfilter", NULL, NULL, filter_graph);
	
	//通过AVFilterLink连接滤波器
	avfilter_link(in_video_filter, 0, my_video_filter, 0);
	avfilter_link(my_video_filter, 0, out_video_filter, 0);
	
	//提交滤波图
	avfilter_graph_config(filter_graph, NULL);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【FFMPEG】AVFilter使用流程 的相关文章

  • 使用 FFMPEG 播放音频

    我一直在尝试使用 NDK 将 FFMPEG 用于播放音频 移植到 Android 中 我取得了一些成功 我可以构建 FFMPEG 并通过 NDK 链接它 我可以打电话avcodec decode audio3 并解码给定的音频文件 所以这里
  • 如何在PHP中显示上传文件后的结果

    我有一个将视频上传到服务器的脚本 一切正常 但在视频上传到服务器完成后出现问题 它以数组形式显示 uploads 文件夹中所有上传的文件 我只想要我刚刚上传的文件的结果 它不显示以前的文件 我需要 ffmpeg 来提高视频质量 索引 php
  • FFmpeg - 找不到 ExecuteBinaryResponseHandler - Android/Java

    我正在尝试制作一个用于反应原生的模块 它将把视频变成 gif 我对 android studios java 几乎没有经验 但我很想了解更多 我在用这个图书馆 https github com WritingMinds ffmpeg and
  • Python 子进程中的 ffmpeg - 无法找到“管道:”的合适输出格式

    尝试通过 Python 使用 ffmpeg 将字幕刻录到视频中 在命令行中工作正常 但是当从 Python 子进程调用时 p subprocess Popen cd Downloads yt ffmpeg i video vf subtit
  • 使用 ffmpeg 处理流的解码数据时出错

    我正在使用以下命令 ffmpeg i video1a flv i video1b flv i video1c flv i video2a flv i video3a flv i video4a flv i video4b flv i vid
  • JavaScript 中的 FFMPEG 命令

    是否可以使用如下命令 ffmpeg i video 1920 mp4 vf 比例 640 360 video 640 mp4 hide banner在纯 JavaScript 中降低视频的分辨率 例如 我有一个下拉菜单 其中有标签 所以我想
  • 如何调试视频解码损坏?

    我刚刚开始为一家新公司工作 我的新角色要求我帮助调试他们通过解码帧接收到的视频损坏 尽管我打算深入研究代码并研究问题的具体细节 但它让我开始思考视频调试的总体情况 由于处理视频对我来说非常陌生 整个过程看起来相当复杂 而且似乎有很多地方可以
  • ffmpeg 使用 -movflags faststart

    我尝试使用命令 movflags 快速启动 并得到以下错误 Microsoft Windows 版本 6 0 6002 版权所有 c 2006 Microsoft 公司 版权所有 C uploads 1 videos gt ffmpeg i
  • 为视频添加水印的命令

    我尝试在一个视频上添加水印 但 FFmpeg 命令不会执行 错误代码为 3037 我运行相同的代码来修剪视频 视频已成功修剪 因此没有问题inputpath or outputpath我也有ic watermark png在资产文件夹中 我
  • 防止 ffmpeg 在降低视频分辨率的同时改变颜色强度

    我有一个用例 我需要缩小规模716x1280mp4 视频到358x640 原件的一半 我使用的命令是 ffmpeg i input mp4 vf scale 640 640 force original aspect ratio decre
  • 使用快速同步 h264_qsv 编码器时 ffmpeg avcodec_encode_video2 挂起

    当我使用 mpeg4 或 h264 编码器时 我能够使用 ffmpeg 3 1 0 的 API 成功编码图像以生成有效的 AVI 文件 但是 当我使用快速同步编码器 h264 qsv 时 avcodec encode video2 有时会挂
  • ffmpeg通过添加框或边框来扩展(而不是调整大小)视频大小

    假设我有一个特殊分辨率的视频 例如 1280x718 我想将其更改为 1280x720 但我宁愿只在顶部和底部添加一行 而不是将 718 像素垂直插值到 720 所以基本上 我正在寻找一种方法告诉 ffmpeg 创建 1280x720 的输
  • 如何在 PHP 中运行 ffmpeg 命令

    我需要在 PHP 中运行 ffmpeg 命令 但是 php ffmpeg 不再支持最新版本并且已经过时 我可以知道在网络文件中运行 ffmpeg 命令的替代方法吗 PHP Javascript jQuery 我尝试exec and shel
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 无法在 Windows 7 机器中使用 OpenCV 2.4.3、Python 2.7 打开“.mp4”视频文件

    我目前正在进行一个涉及读取 mp4 视频文件的项目 我遇到的问题是它在Windows 7机器上使用Python 2 7 32位 OpenCV 2 4 3 cv2 pyd 代码片段如下 try video cv2 VideoCapture v
  • Python 用静态图像将 mp3 转换为 mp4

    我有x文件包含一个列表mp3我想转换的文件mp3文件至mp4文件带有static png photo 似乎这里唯一的方法是使用ffmpeg但我不知道如何实现它 我编写了脚本来接受输入mp3文件夹和一个 png photo 然后它将创建新文件
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • 在 ffmpeg 中,如何使用scale2ref 过滤器缩放 dvdsub 字幕以匹配视频大小?

    我有一个从直播电视录制的 mpeg 文件 其中包含视频以及多个音频和字幕流 我的最终目标是能够创建较小的视频文件 因为 mpeg 文件大小为数 GB 我在这条道路上的第一步只是能够选择视频 音频和字幕流中的每一个并将它们复制到 mkv 文件
  • OpenCV IP 相机应用程序崩溃 [h264 @ 0xxxxx] 访问单元中缺少图片

    我在 cpp 中有一个 opencv 应用程序 它使用 opencv 的简单结构捕获视频流并将其保存到视频文件中 它与我的网络摄像头完美配合 但是 当我运行它从 IP 摄像机捕获流时 它可能会在大约十秒后崩溃 我的编译命令是 g O3 IP
  • 如何仅在使用 ffmpeg 添加相同速度的分离音频流时更改视频速度?

    我正在使用 ffmpeg 作为视频过滤器 但是 当我改变视频速度时 我遇到了问题 音频比视频长 ffmpeg i INPUT mp4 filter v setpts 0 5 PTS shortest y preset ultrafast O

随机推荐

  • visjs 数据的增删改筛选(DataSet & DataView)

    visjs中的 DatatSet 用于数据的保存 可操作非结构化数据 并可监听数据的变化 DataSet构造 var data new vis DataSet data options 构造后 可通过 add updateOnly upda
  • Pandas知识点-DataFrame数据结构介绍

    Pandas知识点 DataFrame数据结构介绍 一 Pandas简介和安装 Pandas是Python中用于数据处理和数据分析的开源库 2008年由金融数据分析师Wes McKinney开发 开发Pandas的初衷是为了方便进行金融数据
  • 如何在pycharm中使用git

    一 环境配置 1 下载安装git 安装成功后 打开git bash here输入以下命令配置基础信息 git config global user name 用户名 git config global user name 邮箱地址 输入命令
  • 关于配置Golang语言环境中的一些问题以及配置yum源的方法

    关于配置Go语言环境中的一些问题 坚持不做无用的 重复的 混字数的博客 所以主要谈及安装使用过程中遇到的问题 具体安装参考博客 https pmlpml github io ServiceComputingOnCloud ex instal
  • SpringBoot中注入RedisTemplate报空指针

    现象 RedisTemplate不能作为静态变量注入 否则报空指针 错误做法 private static RedisTemplate
  • Pandas 中 SettingwithCopyWarning 的原理和解决方案

    Pandas 中 SettingwithCopyWarning 的原理和解决方案 原文链接 https www dataquest io blog settingwithcopywarning 原文标题 Understanding Sett
  • 防御第二天-防火墙演示实验

    1 上课思维导图 2 防火墙演示实验 防火墙FW1 原用户名 admin 原密码 Admin 123 配地址
  • 狂神docker学习笔记

    文章目录 前言 Docker 概述 1 Docker 为什么会出现 2 Docker 历史 3 Docker 能干嘛 Docker 安装 1 Docker的基本组成 2 安装Docker 3 阿里云镜像加速 4 回顾HelloWorld流程
  • Application is running inside IIS process but is not configured to use IIS server

    删除Program webBuilder UseKestrel
  • JSON字符串转换成List对象集合

    简单说下 有一个json字符串 我想通过jackson把json字符串转换成list对象集合 网上找了很多 但都不尽人意 后来还是看jackson文档 才知道怎么做 需要的包
  • ubuntu20.04配置安装frp内网穿透

    1 frp所在的github地址 https github com fatedier frp 2 下载 wget https github com fatedier frp releases download v0 38 0 frp 0 3
  • from keras.engine.topology import Layer 无此模块问题

    这可以说是深度学习必踩坑 就是版本问题 复现别人得代码时出现得问题 一开始没发现这篇博文 在GitHub上找了一圈都没找到这个引入 还走了弯路 以为是新版本包不一样了 修改也不可行 还是见识少了 这篇博客没营养 只作踩坑记录 参考博客 Ke
  • 什么是测试开发工程师(SET)?

    经常有人问到 什么是 软件测试开发工程师 Software Engineers in Test 缩写为SET 借用Google的规范来说其实就是 在测试中的软件工程师 其工作性质上首先是测试 然后才是开发 那么这里会让大家产生一个矛盾的感觉
  • Quick - Hello World

    文章目录 背景 谈一谈为我什么学QtQuick 环境搭建 Qt 安装 VS2019 安装 Qt Visual Studio Tools Hello World pro main cpp main qml 运行效果 参考鸣谢 背景 Qt4自2
  • Mybatis和Mybatis-Plus的配置

    目录 一 springMVC中Mybatis的配置 1 添加 MyBatis 和 MyBatis Spring 的依赖 2 配置数据源 3 配置 MyBatis 4 编写 Mapper 接口和对应的 XML 文件 二 springnboot
  • 大学二年级各科的学习成绩

    快要考试了 过多三个星期就是复习周了 又得狂抓一阵子 今天打开教务处 情不自禁打开成绩列表 希望继续保持吧 分数 学分 绩点 2008 2009学年上学期 01010022 毛邓三 上 必修 94 0 3 00 13 20 01020003
  • fortran使用MKL函数库计算方阵的逆矩阵

    本篇博文简要介绍使用MKL函数库计算方阵的逆矩阵 代码如下 program MKL getrfANDgetri use lapack95 implicit none integer parameter n 3 integer i j ipi
  • Python+turtle实现一个乌龟逃跑小游戏(可以和孩子一起完成)

    直接上演示视频 这个代码也是之前当老师的时候 给孩子们写的一个小游戏 那么我们一起看一下这个小游戏是如何让完成的 1 首先完成代码的前期准备 1 这里我们t turtle Pen 海龟 表示我们操作的小海龟 2 enemy turtle P
  • Windows 下安装 Memcached

    官网上并未提供 Memcached 的 Windows 平台安装包 我们可以使用以下链接来下载 你需要根据自己的系统平台及需要的版本号点击对应的链接下载即可 32位系统 1 2 5版本 http static runoob com down
  • 【FFMPEG】AVFilter使用流程

    流程图 核心类 AVFilterGraph 于统合这整个滤波过程的结构体 AVFilter 滤波器 滤波器的实现是通过AVFilter以及位于其下的结构体 函数来维护的 AVFilterContext 个滤波器实例 即使是同 个滤波器 但是