【ffmpeg命令基础】过滤处理

文章目录

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


前言

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://xiahunao.cn/news/3246559.html

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

相关文章

软件确认测试报告包括的内容和作用简析,专业软件测试公司推荐

软件确认测试是指验证软件是否符合特定需求和规范的过程。它是软件开发生命周期中的一个关键环节,旨在确保软件的功能、性能、稳定性和安全性达到预期的标准,确认测试报告则是整个确认测试过程的总结和归纳,是对软件质量和稳定性的全面评估。…

5分钟教会你夸克网盘批量转存分享,夸克网盘批量保存,付详细图文

大家好,我是徐师兄,今天为大家带来的是夸克网盘批量转存分享,夸克网盘批量保存,付详细图文教程。 前言 夸克网盘批量保存工具下载 前段日子折腾夸克网盘的时候,找来了好多的资源,但这些资源链接非常多&a…

Transformer超详细解读

论文:Attention Is All You Need 作者:Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin 机构:Google Brain 链接:https://arxiv.org/abs/1706.03762…

SQL Server Query Store Settings (查询存储设置)

参考:Query Store Settings - Erin Stellato 在 SQL Server 2017 中,有九 (9) 个设置与查询存储相关。虽然这些设置记录在sys.database_query_store_options中,但我经常被问到每个设置的值“应该”是多少。我在下面列出了每个设置&am…

EXCEL VBA工程密码破解 工作表保护破解

这里写目录标题 破解Excel宏工程加密方法一 新建破解宏文件方法二 修改二进制文件 破解工作表保护引用 破解Excel宏工程加密 如图所示 白料数据处理已工程被加密。 方法一 新建破解宏文件 1 创建一个XLSM文件,查看代码 ALTF11 2 新建一个模块,“插…

夏日狂欢水上漂流的爆笑奇遇记

【夏日狂欢,水上漂流的爆笑奇遇记 —— 月亮姐姐的“睫毛漂流记”】在这个炎炎夏日,当烈日炙烤着大地,每一寸空气弥漫着对清凉的渴望时,一场别开生面的“暑期嘉年华”正悄然掀起一场水上狂欢的浪潮。而在这场盛宴中,月…

【论文】(2024.6) KAN: Kolmogorov–Arnold Networks 阅读笔记 | KAN周边扩展

KAN的优势声称是能以更少的参数量实现更高的精度。KANs在数学上是可靠的、准确的和可解释的。 一 KAN 论文题目:KAN: Kolmogorov–Arnold Networks 论文地址:https://arxiv.org/pdf/2404.19756 代码地址:https://github.com/KindXiaoming/…

如何打造一个专属网盘?可道云teamOS这些个性化设置了解一下

在这个数字化时代,企业对于云端存储和协作工具的需求日益增长。而网盘作为企业协作的重要工具之一,其个性化、定制化的需求也日益凸显。 今天,我要为大家介绍的是一款高度个性化的企业网盘——可道云teamOS。 满足个性化需求的企业网盘 可…

防火墙NAT地址转换和智能选举综合实验

一、实验拓扑 目录 一、实验拓扑 二、实验要求(接上一个实验要求后) 三、实验步骤 3.1办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 3.2分公司设备可以通过总公司的移动链路和电信链路访…

【深度学习】PyTorch框架(4):初始网络、残差网络 和密集连接网络

1、引言 在本篇文章中,我们将深入探讨并实现一些现代卷积神经网络(CNN)架构的变体。近年来,学界提出了众多新颖的网络架构。其中一些最具影响力,并且至今仍然具有重要地位的架构包括:GoogleNet/Inception架…

Qt Style Sheets-使用样式表自定义 Qt 部件

使用样式表自定义 Qt 部件 在使用样式表时,每个小部件都被视为具有四个同心矩形的框:边距矩形、边框矩形、填充矩形和内容矩形。框模型对此进行了更详细的描述。 盒模型 以下是四个同心矩形在概念上的呈现方式: 边距超出边框。边框绘制在边…

自学 阿里巴巴Java开发手册最新版(嵩山版)

🔴 阿里巴巴Java开发手册最新版(嵩山版) 一、编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 日期时间(六) 集合处理(七) 并发处理(八) 控制语句(九) 注释规约(十) 前后端规范 二、异常日志(一) 错误码(二) 异常处理(三)…

mac环境下安装python3的图文教程

Python 是一种功能多样且强大的编程语言,在各个领域得到广泛应用。许多 Mac 用户都在其设备上安装和运行 Python,以运行特定的应用程序或创建、运行自己的 Python 脚本。 文章源自设计学徒自学网-http://www.sx1c.com/49441.html 虽然某些版本的 macOS…

沃尔玛,temu测评: 搭建稳定高效的自养号测评体系时需要考虑的关键点

​自养号测评是通过自己培养账号进行测评,‌将整个过程的主导权掌握在自己手中,‌可以有效控制测评过程,‌降低风险。建议还是自己精养一批账号,账号在自己手里比较安全可控,随时随地可以给自己送测,精准搜…

现场可重构CPLD芯片应用案例—蓝牙音箱

我司英尚微提供的高性能数模混合现场可重构IC、通用可配置的模数混合芯片内部集成丰富的模拟资源和数字资源,可轻松替代电路中的各种标准器件,并按照客户要求组合成最优小型ASIC,缩短开发周期,降低成本。下面介绍LS98002现场可重构…

openwrt安装netbird

官方版本安装后无法启动,有报错,请使用以下版本: https://github.com/tbc0309/openwrt-netbird 下载地址: https://github.com/tbc0309/openwrt-netbird/releases/ 平台架构根据自己的设备选择,可以通过以下方法获得…

【LeetCode:试题 16.06. 最小差 + 双指针 + 防止整型溢出】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Visual Studio使用——在vs中给vb.net项目添加新的窗口:新建的方式、添加已有窗口的方式

目录 引出Visual Studio使用vb添加新的窗体自定义代码片段vs显示所有文件 总结Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 引出 Visual Studio使用—…

子进程继承父进程文件描述符导致父进程打开设备文件失败

开发过程中有时会遇到需要在程序中执行三方程序或者shell脚本,一般会通过system(), popen(), exec簇来完成该功能。我们知道以上方法会通过fork创建子进程后在子进程中执行相应指令。如图1为某个示例流程,具体的程序执行流程如图2所示,线程my…

[RK3588-Android12] 关于如何取消usb-typec的pd充电功能

问题描述 RK3588取消usb-typec的pd充电功能 解决方案: 在dts中fusb302节点下usb_con: connector子节点下添加如下熟悉: 打上如下2个补丁 diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c8a4e57c9f9b..173f8cb7…