【ffmpeg命令基础】过滤处理

news2024/9/23 5:15:01

文章目录

  • 前言
  • 过滤处理的介绍
  • 两种过滤类型
    • 简单滤波图
      • 简单滤波图是什么
      • 简单滤波示例
    • 复杂滤波图
      • 复杂滤波是什么
      • 区别
      • 示例
  • 总结


前言

FFmpeg是一款功能强大的开源音视频处理工具,广泛应用于音视频的采集、编解码、转码、流化、过滤和播放等领域。1本文将重点介绍FFmpeg命令在音视频过滤处理中的应用,帮助读者掌握如何使用FFmpeg进行高效的音视频处理。


过滤处理的介绍

ffmpeg中,滤波图(Filtergraph)是一种用来描述音频和视频滤镜链的工具。滤镜链是由一个或多个滤镜组成的,这些滤镜可以对音频或视频流进行各种处理,比如调整亮度、对比度、色彩,或者添加特效等。

那么,什么叫做过滤呢?过滤就是对音频或视频流进行处理的过程。你可以把它想象成一个过滤器,原始的音频或视频数据像水一样流过这个过滤器,过滤器会根据我们的需求去掉一些不需要的部分,或者增加一些我们需要的效果。比如,我们可以通过过滤器来去除视频中的噪声,或者增加一些特效,如模糊、旋转等。

举个例子,如果你想要把一段彩色的视频转换成黑白,你就可以使用一个叫做"colorchannelmixer"的滤镜,它会把视频的颜色信息去掉,只留下黑白信息,从而达到我们的目的。

两种过滤类型

简单滤波图

简单滤波图是什么

简单滤波图(Simple Filtergraph)是指在FFmpeg中用于处理音视频流的一种滤波器链。它有以下几个特点:

  • 单输入单输出:简单滤波图只有一个输入流和一个输出流,且输入输出类型相同。
  • 线性处理:滤波器按顺序处理数据,每个滤波器依次处理输入流并将结果传递给下一个滤波器。
  • 配置简单:使用-filter选项(视频用-vf,音频用-af)来配置。例如,给视频添加一个简单滤波器可以这样写:ffmpeg -i input.mp4 -vf "filter_name" output.mp4

简单滤波图适用于需要对单个流进行简单处理的情况,比如调整视频帧率、裁剪视频、调整音量等。

简单滤波示例

简单滤波大概是这样的,他是当向的,可以从deinterlace ->scale 看出

 _______        _____________        _______        ________
|       |      |             |      |       |      |        |
| input | ---> | deinterlace | ---> | scale | ---> | output |
|_______|      |_____________|      |_______|      |________|

上面的两个过滤的作用:

  1. 去隔行扫描(Deinterlace):这是第一个滤镜。隔行扫描是一种旧的视频信号技术,它会在不同的时间扫描视频的奇数行和偶数行,这样可以减少带宽。但是在现代的设备上播放隔行扫描的视频,可能会出现画面闪烁的问题。去隔行扫描的滤镜就是用来解决这个问题的,它会将隔行扫描的视频转换为逐行扫描的视频。

  2. 缩放(Scale):这是第二个滤镜。缩放滤镜可以改变视频的分辨率。比如,你可以将高清的1080p视频缩放为720p,以减少文件大小和播放所需的计算资源。

D:\Codes\ffmpeg_Command>ffmpeg -i test2.mp4 -vf "yadif,scale=2560:1440" out3.mp4

test2.mp4转换成2K(test2.mp4原本为1K)
在这里插入图片描述
在这里插入图片描述
大小明显增加

复杂滤波图

复杂滤波是什么

ffmpeg中,复杂滤波图(Complex Filtergraph)是一种更高级的音视频处理工具,它可以处理多个输入流,并可以生成多个输出流。复杂滤波图可以进行更复杂的音视频处理任务,比如混音、转场效果、画中画效果等。

区别

与简单滤波图相比,复杂滤波图的主要区别在于:

  • 多输入多输出:复杂滤波图可以处理多个输入流,并可以生成多个输出流。这使得它可以进行更复杂的音视频处理任务。
  • 非线性处理:复杂滤波图可以进行非线性的处理,比如将多个视频合并成一个,或者将一个视频分割成多个。
  • 配置复杂:由于复杂滤波图的功能更强大,所以配置起来也更复杂。你需要使用-filter_complex选项来配置复杂滤波图。

他的滤波图如下:

 _________
|         |
| input 0 |\                    __________
|_________| \                  |          |
             \   _________    /| output 0 |
              \ |         |  / |__________|
 _________     \| complex | /
|         |     |         |/
| input 1 |---->| filter  |\
|_________|     |         | \   __________
               /| graph   |  \ |          |
              / |         |   \| output 1 |
 _________   /  |_________|    |__________|
|         | /
| input 2 |/
|_________|

示例

下面是一个复杂滤波图的命令示例,它将两个视频文件合并成一个:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[outv]" -map "[outv]" output.mp4

这个ffmpeg命令的各个部分含义如下:

  • ffmpeg:这是命令行工具的名称,用于调用ffmpeg程序。

  • -i input1.mp4 -i input2.mp4-i参数用于指定输入文件,这里有两个输入文件:input1.mp4input2.mp4

  • -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[outv]":这是复杂滤波图的配置。[0:v][1:v]表示选择第一个输入文件的视频流和第二个输入文件的视频流。concat=n=2:v=1:a=0表示将这两个视频流合并(concat)成一个,n=2表示有两个输入流,v=1表示生成一个视频流,a=0表示不生成音频流。[outv]是这个滤波图的输出标签,用于在后面的-map参数中引用。

  • -map "[outv]"-map参数用于指定输出流,"[outv]"表示使用滤波图的输出作为输出流。

  • output.mp4:这是输出文件的名称。

所以,这个命令的作用是将input1.mp4input2.mp4两个文件的视频流合并成一个,然后输出到output.mp4文件中。

这样是没有声音的,我们需要选择它的声音流合并:

ffmpeg -i test2.mp4 -i test3.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outvv][outa]" -map "[outvv]" -map "[outa]" out5.mp4

总结

通过本文的学习,读者应能够熟练使用FFmpeg命令进行音视频的过滤处理,包括添加滤镜、调整视频效果和音频效果等。FFmpeg的强大功能和灵活性使其成为音视频处理的首选工具,希望本文能为读者提供实用的指导和参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql存储引擎和备份

索引 事务 存储引擎 概念:存储引擎,就是一种数据库存储数据的机制,索引的技巧,锁定水平。 存储引擎。存储的方式和存储的格式。 存储引擎也属于mysql当中的组件,实际上操作的,执行的就是数据的读写I/O。…

ROC曲线和AUC

ROC曲线能更稳定反映模型的性能,对测试集合中数据分布的变化不敏感 AUC:当随机挑选一个正样本和一个负样本,根据当前的分类器计算得到的score将这个正样本排在负样本前面的概率 从AUC判断分类器(预测模型)优劣的标准&a…

【QT开发(19)】2023-QT 5.14.2实现Android开发,使用新版SDK,试图支持 emulator -avd 虚拟机

之前的博客【QT开发(17)】2023-QT 5.14.2实现Android开发,SDK是24.x版本的,虚拟机是32位的,但是现在虚拟机是64位的了,需要升级SDK匹配虚拟机 文章目录 最后的效果1.1 下载最新版 SDK tools (仅限命令行工…

JavaWeb-【3】DOM

笔记系列持续更新,真正做到详细!!本次系列重点讲解后端,那么第一阶段先讲解前端【续上篇CSS和JavaScript】 目录 1、dom介绍 2、html-dom 3、document 4、应用实例 ①、应用实例1 ②、多选框案例 ③、图片切换案例 ④、添…

高性能图数据库Neo4j从入门到实战

图数据库Neo4j介绍 什么是图数据库(graph database) 随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样,Hash 对输入的数据进行整理,生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

CefSharp音视频编译与免费下载

注:Cefharp 音频和视频播放编译,生成相应的dll文件,从而支持项目开发。 建议编译至少 16G 的 RAM和至少 250G 的 SSD。该脚本以 E 盘为例,您需要在 E 盘上手动创建 cef 文件夹。禁止在转载后通过发布其他平台向用户收取下载费用。…

全国区块链职业技能大赛第八套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 医疗健康平台中涉及到医院、医生、患者等参与方,他们需要在区块链医疗健康平台中完成账户注册、身份上链、挂号就诊、查询病例等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于医疗健康平台系统架构,以…

【数据结构进阶】二叉搜索树

🔥个人主页: Forcible Bug Maker 🔥专栏: C || 数据结构 目录 🌈前言🔥二叉搜索树🔥 二叉搜索树的实现Insert(插入)find(查找)erase(删除)destro…

毕业/期刊论文发表必备:YOLOv5 / v7 / v8 /v10算法网络结构图【文末提供原型文件下载地址】

前言:Hello大家好,我是小哥谈。同学们在写YOLO算法相关毕业论文/期刊论文的时候,不可避免的会用到相关版本的网络结构图,曾有很多小伙伴私信我索要原型文件,本文就给大家提供YOLOv5/v7/v8/v10版本算法网络结构图及原型文件下载地址。🌈 目录 🚀1.网络结构图 �…

Fiddler 导出请求为curl格式

来自:https://www.cnblogs.com/yudongdong/p/15418181.html Fiddler 下载地址: https://downloads.getfiddler.com/fiddler-classic/FiddlerSetup.5.0.20243.10853-latest.exe 这段代码加到类中 public static RulesOption("关闭请求体转代码", "生成代码&qu…

简单页表和多级页表

地址转换(Address Translation) 内存需要被分成固定大小的页(Page)然后再通过虚拟内存地址(Virtual Address) 到物理内存地址(Physical Address) 的地址转换(Address Translation)才能到达实际存放数据的物理内存位置 简单页表 页表的概念 想要把虚拟内存地址,映…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中,网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时,IP地址无疑是一个核心的概念。然而,关于IP地址的分配和决定因素,很多人可能存在误解。有些人认为IP地址是由电脑决定的,而…

pytorch 46 将ASpanFormer模型导出onnx运行

ASpanFormer是一个2022年8月份发布的算法,其主要步骤与LoFTR模型类似,因此无法导出为onnx模型。根据ASpanFormer论文中的数据与效果图,可以确定AsPanFormer是可以作为一个比SP+SG更为有效的方案,其在标准数据集上的效果优于SP+SG,在速度上远超SP+SG,与LoFTR接近;在预测点…

C语言:静态库和动态(共享)库

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 在软件开发中,库(Library)是一个至关重要的概念。它们是由函数和数据的集合构成,用于实现特定的功能,供其他程…

测试——性能测试

内容大纲: 常见的性能问题 性能测试是什么 性能测试和功能测试之间的区别 为什么要进行性能测试 常见的性能指标及性能测试专业术语 性能测试分类 1. 常见的性能问题 系统内部以及软件的代码实现: 资源泄漏,包括内存泄漏。CPU使用率达到100%,系统被锁定…

Vue3组件通信

1、props 1.1 父传子 父组件:通过属性在子组件标签传递 子组件:通过defineProps接收 1.2 子传父 1.父组件先给子组件传递一个函数 2.子组件接收此参数(函数),并在合适的时机调用此函数,通过函数的参数&…

SEO之网站结构优化(四)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 4、清晰导航 清晰的导航系统是网站设计的重要目标,对网站信息架构、用户体验影响重大。SEO也越来…

Hadoop高可用集群搭建及API调用

NameNode HA 背景 在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameNode的备份,它只是NameNode的一个助理,协助NameNode工作,SecorndaryNameNode会对fsimage和edits文…

【BUG】已解决:OSError: [Errno 22] Invalid argument

已解决:OSError: [Errno 22] Invalid argument 目录 已解决:OSError: [Errno 22] Invalid argument 【常见模块错误】 错误原因: 解决方法如下: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…