ffmepg滤镜
视频按顺时针方向旋转90度
ffplay -vf transpose=1 -i juren-30s.mp4
ffplay -f lavfi -i testsrc -vf transpose=1

-f lavfi -i testsrc这个滤镜是ffmpeg给用户的一个测试使用的视频
视频水平翻转(左右翻转)
-vf hflip
实现慢速播放,声音速度是原始速度的50%
ffplay p629100.mp3 -af atempo=0.5
视频水印
1、右下角
ffmpeg -i in.mp4 -i logo.jpg -filter_complex ‘overlay=main_w-overlay_w-10:main_h-overlay_h-10’ out.mp4
1、 左下角
ffmpeg -i in.mp4 -i logo.jpg -filter_complex ‘overlay=x=10:y=main_h-overlay_h-10’ out.mp4
overlay=x=10:y=10 左上
overlay=x=main_w-overlay_w-10:y=10 右上
-filter_complex: 相比-vf, filter_complex适合开发复杂的滤镜功能,如同时对视频进行裁剪并旋转。参数之间使用逗号(,)隔开即可
main_w:视频宽度
overlay_w: 要添加的图片水印宽度
main_h : 视频高度
overlay_h:要添加的图片水印宽度
ffmpeg -i in.mp4 -vf "movie=logo.jpg[watermark];[in][watermark]
overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
logo.jpg: 要添加的水印图片地址
overlay:水印参数
main_w-overlay_w-10 : 水印在x轴的位置,也可以写成x=main_w-overlay_w-10
main_h-overlay_h-10:水印在y轴的位置
滤镜的语法:
三个单元,滤镜filter,滤镜链filterchain,滤镜图;-vf -af后可以接滤镜图,-filter_complex后也可以
滤镜之间用",“隔开,构成滤镜链,滤镜链条之间用”;“隔开,如果有隔开符号则滤镜图应该用”“引起来符合linux终端规范,构成路径图
一个滤镜如下:
[input_link_lable1][input_link_lable2]… filter_name=parameters [output_link_lable1][output_link_lable12]…
滤镜名前和参数后是链接标签列表,一个标签是一个输入或输出端口。标签是可选的,不填就是默认值。如果一个滤镜没有输出端,那么它默认连接到此滤镜链中,后面的第一个没有输入端的滤镜。
在一个滤镜中,“:“用于分割key=vlue对,比如:
:”分隔的key=value列表
ffplay -i good.mp4 -vf scale=iw/2:ih/2
在一个key=vlue对中,”:“用于分割vule值,比如:
ffplay -i good_scale.mp4 -vf fade=in:0:30
淡入视频的前30帧,这个滤镜有三个参数,他们之间用”:"隔开
//默认log在视频的左上角,在(0,0)位置
ffmpeg -i good_scale.mp4 -i mark.png -filter_complex overlay good_mark.mp4
//在右下角,以右下角为(0,0),log在(-50,10)位置

ffmpeg -i good_scale.mp4 -i mark.png -filter_complex overlay=main_w-overlay_w-50:main_h-overlay_h-10 good_mark.mp4
其中main_w为视频的宽,overlay_w为log的宽

滤镜输入输出默认的方式:【引用文章】
ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt
“-filter_complex” 选项指定了一个复杂 filtergraph,此 filtergraph 由单个视频滤镜 overlay 构成。overlay 滤镜需要两个视频输入,但此处并未为 overlay 滤镜指定输入,因此输入中的头两个有效视频流(A.avi 中的 stream 0 和 C.mkv 中的 stream0)会被作为 overlay 滤镜的输入。overlay 滤镜输出无标号,因此 overlay 滤镜的输出会被写入第一个输出文件 out1.mp4 中。输出时也可以用map指定,但注意一个流只能被指定到一个输出,不然出错,则命令不会输出任何文件。
如:
ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \-map '[outv1]' -an out1.mp4 \out2.mkv \-map '[outv2]' -map 1:a:0 out3.mkv
hue滤镜用于调整视频的色调(hue)
ffplay -i good.mp4 -vf scale=640:360
ffplay -i good.mp4 -vf scale=iw/2:ih/2
一个滤镜图也可以只有一个滤镜链,一个滤镜链可以只包含一个滤镜,这种特例情况下,一个滤镜图只包含一个滤镜。
因此ffmpeg命令对滤镜的讨论为了方便不区分滤镜,滤镜链,滤镜图,而是只针对滤镜图(filtergraph)进行讨论。
针对简单的,也就是只有一个输入和输出的滤镜图,用-vf -af,官网如图,它的处理过程是线性的,执行完一个滤镜,再执行下一个滤镜。
针对复杂的,多个输入和输出滤镜图,用-filter_complex等价于lavfi,不同的滤镜图之间是可以同时进行的。

https://ffmpeg.org/ffmpeg-filters.html
http://ffmpeg.org/ffmpeg.html#Filtering
https://zhuanlan.zhihu.com/p/595299940
相关文章:
ffmepg滤镜
视频按顺时针方向旋转90度 ffplay -vf transpose1 -i juren-30s.mp4 ffplay -f lavfi -i testsrc -vf transpose1 -f lavfi -i testsrc这个滤镜是ffmpeg给用户的一个测试使用的视频 视频水平翻转(左右翻转) -vf hflip 实现慢速播放,声音速度是原始速度的50% ffpla…...
Linux 基础(六)常用命令 - find locate which whereis gzip gunzip tar
find & locate & which & whereis & gzip & gunzip & tar findlocatewhichwhereisgzipgunzipzip/unziptar find 在指定目录下查找文件或目录 find --help Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...…...
【Ajax】回调地狱解决方法
回调地狱(Callback Hell)是指在异步编程中,特别是在嵌套的回调函数中,代码变得深度嵌套、难以阅读和维护的现象。这通常发生在处理多个异步操作时,每个操作都依赖于前一个操作的结果。回调地狱使代码变得难以理解、扩展…...
解决Vue根组件设置transition失效的问题
解决Vue根组件设置transition失效的问题 1.代码 <div id"app"><!-- :name"$route.meta.transitionName" --><transition :name"animation" mode"out-in"><router-view /></transition></div>&…...
【剑指 Offer 40】最小的k个数
题目: 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入 4、5、1、6、2、7、3、8 这 8 个数字,则最小的 4 个数字是 1、2、3、4。 示例: 输入:arr [3,2,1], k 2 输出:[1,2] 或者 [2,1] …...
vue3+vite在main.ts文件中引入./App.vue报错(./App.vue不是模块)
问题 如下图: 方法一 下载TypeScript Vue Plugin (Volar)插件就不报红了,看它的描述应该就是ts文件可以识别vue文件。 方法二 在src文件夹下添加env.d.ts文件,添加以下代码: declare module *.vue {import type { DefineC…...
【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II
作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 102. 二叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节…...
HTML详解连载(2)
HTML详解连载(2) 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽超链接作用代码示例解释经验分享 音频标签代码示例注意强调 视频标签代码示例注意强调 列表作用:布局内容排列整齐的区域。分类:无序列表&#x…...
qt事件系统源码-----定时器
qt定时器的使用一般有以下几种方式: 1、直接使用QTimer对象,绑定定时器的timeout信号; 2、使用QTimer的静态方法singleshot方法,产生一个一次性的定时事件 3、在QObject子类中,调用startTimer方法,产生定…...
【Android】ViewBinding+DataBinding+MVVM新手快速上手
为什么写这篇博客 网上大部分博客,代码量都比较大,把实际的业务都代入进去了 这篇博客的目的,就是为了讲解基本原理和使用思路,然后给出一个最简单的Demo 这里不讲解具体用法,那样篇幅会太长,直接看Demo…...
生成式人工智能模型:提升营销分析用户体验
使用生成式人工智能来改善分析体验,使业务用户能够询问有关我们数据平台中可用数据的任何信息。 在本文中,我们将解释如何使用新的生成式人工智能模型 ( LLM ) 来改善业务用户在我们的分析平台上的体验。假设我们为零售销售经理提供 Web 应用程序或移动应…...
【并发编程】无锁环形队列Disruptor并发框架使用
Disruptor 是苹国外厂本易公司LMAX开发的一个高件能列,研发的初夷是解决内存队列的延识问顾在性能测试中发现竟然与10操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCn演讲后,获得了业界关注…...
【C语言】初阶指针详解
大家好,我是苏貝,本篇博客带大家了解C语言中令人头疼的指针,如果大家觉得我写的不错的话,可以给我一个赞👍吗,感谢❤️ 使用的是VS2019编译器,默认为32位平台 文章目录 ①指针是什么②指针定义与…...
ElasticSearch:项目实战(1)
es环境搭建参考:ElasticSearch:环境搭建步骤_Success___的博客-CSDN博客 需求: 用户输入关键可搜索文章列表 关键词高亮显示 文章列表展示与home展示一样,当用户点击某一篇文章,可查看文章详情 思路: …...
React 实现文件分片上传和下载
React 实现文件分片上传和下载 在开发中,文件的上传和下载是常见的需求。然而,当面对大型文件时,直接的上传和下载方式可能会遇到一些问题,比如网络传输不稳定、文件过大导致传输时间过长等等。为了解决这些问题,我们…...
2023.8.13
atcoder_abc\AtCoder Beginner Contest 310\E_NAND_repeatedly //题意:给定一个n长度的01串,计算f(l,r)(l<r,l在1~n,r在1~n)的和,f的计算(ai,a(i1))运算,有0就为1,11为0 //若f(l,r)1,则f(l,r-1)为0或sr为0,即只取决于上一位的情况和当前位ÿ…...
kvm not all arguments converted during string
kylin virt-manager 远程镜像制作问题记录(not all arguments ) 项目场景: 服务器端安装的OS版本:Kylin-Server-10-SP1-Release-Build20-20210518-arm64-2021-05-18 客户端安装的OS版本:Kylin-Server-10-SP1-Release-Build20-20210518-x86_…...
JVM 基础
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化&am…...
智谷星图赵俊:让人才和区块链产业“双向奔赴”丨对话MVP
区块链产业需要什么样的人才?赵俊很有发言权。 赵俊是北京智谷星图科技有限公司的技术总监,也是FISCO BCOS官方认证讲师。他2017年接触区块链,随后选择人才培育领域深耕。“为区块链行业引进更多人才这件事很有价值,跟我的职业理…...
C# Equals()方法报错:NullReferenceException was unhandled
下面是一个C# Equals()方法的例子,执行时报错了 static void Main(string[] args) {string name "sandeep";string myName null;Console.WriteLine(" operator result is {0}", name myName);Console.WriteLine("Equals method result…...
DistroAV终极指南:5步构建专业级网络视频传输系统
DistroAV终极指南:5步构建专业级网络视频传输系统 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi DistroAV(原OBS-NDI)是专为OBS Stud…...
IDM试用重置工具:一键恢复30天试用期的智能解决方案
IDM试用重置工具:一键恢复30天试用期的智能解决方案 【免费下载链接】idm-trial-reset Use IDM forever without cracking 项目地址: https://gitcode.com/gh_mirrors/id/idm-trial-reset 还在为Internet Download Manager(IDM)试用期…...
题解:洛谷 P3799 小 Y 拼木棒
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...
OFDM系统FPGA实现与优化关键技术解析
1. OFDM系统概述与FPGA实现价值正交频分复用(OFDM)作为现代无线通信的核心技术,其核心思想是将高速数据流分解为多个低速子载波并行传输。这种多载波调制方式通过正交性子载波排列,理论上可实现Nyquist极限的频谱效率。在典型城市多径环境下,…...
Vue Router 嵌套路由的“斜杠”法则与路径设计避坑指南
Vue Router 嵌套路由的“斜杠”法则与路径设计避坑指南 在构建现代化的单页面应用(SPA)时,Vue Router 是事实上的路由标准。它强大而灵活,但其中一个细节——嵌套路由中路径(path)前的斜杠(/&am…...
原神模型导入终极指南:GIMI工具完整使用教程
原神模型导入终极指南:GIMI工具完整使用教程 【免费下载链接】GI-Model-Importer Tools and instructions for importing custom models into a certain anime game 项目地址: https://gitcode.com/gh_mirrors/gi/GI-Model-Importer 想要为《原神》角色打造独…...
用Python给图片藏个小秘密:手把手教你实现LSB隐写术(附完整代码)
用Python给图片藏个小秘密:手把手教你实现LSB隐写术(附完整代码) 你是否想过在朋友圈分享的照片里藏一段悄悄话?或是把重要信息伪装成普通图片?这听起来像间谍电影里的情节,但用Python只需几十行代码就能实…...
别再只盯着代码了:从‘未知的大猩猩’看技术人的认知盲区与学习路径设计
技术人的认知盲区:如何发现并驯服你代码之外的"大猩猩" 在技术领域深耕多年的开发者们,往往会对自己的专业能力充满信心——直到某个深夜,生产环境突然崩溃,而你发现根本看不懂日志里那些陌生的错误堆栈;或是…...
SLAM算法评测实战:除了轨迹误差,用evo分析A-LOAM还能看出什么门道?
SLAM算法评测实战:除了轨迹误差,用evo分析A-LOAM还能看出什么门道? 当你在KITTI数据集上跑完A-LOAM算法,看着evo输出的那些彩色轨迹图和误差数字时,是否曾好奇——这些结果究竟揭示了算法的哪些深层特性?作…...
linux 安装 Elasticsearch Kibana
1.下载 通过网盘分享的文件:es 链接: https://pan.baidu.com/s/1JO07VJ8nVsfyC0TzHaLGKw?pwd1dgu 提取码: 1dgu 2.创建 es 用户, es 无法使用root用户启动 # 创建用户组用户 groupadd es useradd -m -g es es # 设置密码(可选) passwd es # …...
