FFmpeg滤镜使用
滤镜(filter)详细介绍参考官方文档。
常用的滤镜功能,像图像加水印/字幕、去logo、图形旋转缩放等,但滤镜不仅仅包括视频部分,还包括音频处理的,像变声变调、声场控制(重低音/留声机/摇滚等效果)。
下面介绍滤镜类中常用命令,该博文长期更新。
Key1. 去除水印
该需求实现分为两步:step1.确认水印位置和效果;step2.位置和效果反复调整合适了,再转码。
step1. ffplay.exe -i Tuesday00.mp4 -vf delogo=x=30:y=40:w=350:h=60:show=1,scale=640x480
-vf指视频的滤镜处理,后面跟参数(水印区域:x/y/w/h,是否圈住区域:show,缩放处理:scale),注意各参数间用"逗号"分隔。
如果不想缩放处理,但是视频w/h太大了,以至于超出了显示器显示区域的范围,可以控制播放窗口的大小。使用-x或-y指定播放窗口的宽或高。
step2. ffmpeg.exe -i Tuesday00.mp4 -vf delogo=x=30:y=40:w=350:h=60:show=0,scale=640x480 -c:v libx264 -c:a copy output.mp4
尝试了多次,确定好区域后,可以进行转码了。注意一点,show要关掉(show=0),video转码参数(-c:v libx264)可以不带,系统默认使用x264编码。
Key2. 去除某个时间段的水印
在上面Key2.step2命令中增加时间控制信息: -ss 5 -t 10(从第5秒开始,持续10s,共10秒钟长的视频)
注意:“-ss 5 -t 10”参数,对于ffmpeg来说,放在input_file前和后貌似没什么差别,都是转成10秒钟长度的视频文件。
另外一点增强型需求:假如有多个时间段需要去除水印,例如,第0-15秒之间某个区域需要去除,还有20-30秒之间的另外一个区域水印去除。
这个需求的方法还没找到,有知道的同学们麻烦告知一下。目前我使用了比较笨的方法,就是多次转码。
Key3. 多个区域去水印
在Key1中的step1命令中再增加一个delogo参数,即命令为:ffplay.exe -i Tuesday00.mp4 -vf delogo=x=30:y=40:w=350:h=60:show=1,delogo=x=230:y=240:w=350:h=60:show=1 -y 300
确定好位置后,再用ffmpeg转码。
Key4. 添加文字水印
与Key1类型,先用ffplay确认位置和效果,再用ffmpeg进行滤镜+转码。
step1. ffplay.exe -i Tuesday00.mp4 -vf "drawtext=fontfile=msyh.ttc:text='Hello,world':x=30:y=60:fontsize=120:fontcolor=yellow"
注意,本地的字体文件(fontfile=msyh.ttc)可以不指定,找不到了用系统使用默认的。
step2. ffmpeg.exe -i Tuesday00.mp4 -vf "drawtext=fontfile=msyh.ttc:text='Hello,world':x=30:y=60:fontsize=120:fontcolor=yellow" output.mp4
Key5. 给视频添加封面
其实是将指定图片作为视频的前几帧(只指定为第一帧时,有的平台可能不使用首帧作为缩略图则达不到效果)。核心思想是,图片转为含若干帧的视频流,再跟主视频合并。
step1. ffmpeg.exe -r 25 -loop 1 -i img.jpg -vcodec libx264 -s 720x1280 -frames 25 -r 25 img_25f.mp4
其中,参数"-r 25 -loop 1"代表以25fps速度反复读取输入文件。参数"-frames 25"指只编码25帧,"-r 25"指定输出文件帧率为25fps。那么命令结果是,生成了1秒钟的视频文件(用工具分析文件,会发现:第一帧的关键帧size较大,后面的B/P帧非常小,只有10+Bytes大小)。
step2. ffmpeg -f concat -i concat.txt -c copy output.mp4
其中,参数"-f concat"指视频合并;参数"-i concat.txt"指定输入文件列表,如下格式:
file input1.mp4 file input2.mp4
Key6. 将视频放在黑板上
另外一种说法是,将视频放在幕布上。
ffmpeg -i input.mp4 -vf pad=720:1280:100:200:black output.mp4
其中,参数"pad=720:1280:100:200"指定了幕布的宽/高以及视频(左上角)放置在该幕布中的位置,参数"black"指定了幕布的颜色。
另外一点需注意,视频不能超出了幕布区域,否则出错。
FFmpeg滤镜使用的更多相关文章
- FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...
- FFmpeg滤镜代码级分析
http://blog.chinaunix.net/uid-26000296-id-3322071.html 前一篇文章<为FFmpeg添加自定义滤镜>详细讲述了FFmpeg的滤镜添加步骤 ...
- FFmpeg滤镜使用指南
文件夹 1. FFmpeg滤镜文档 2. 演示样例 2.1 缩放 2.2 视频加速 2.3 滤镜图,链和滤镜关系 2.4 多个输入覆盖同一个2x2 网格 2.5 转义字符 2. ...
- FFMpeg 滤镜中英文对照
FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.17 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...
- FFmpeg 滤镜及其效果
原文地址:https://blog.csdn.net/dangxw_/article/details/49001413 代码中使用滤镜参见上一篇博客:http://blog.csdn.net/dang ...
- FFmpeg中overlay滤镜用法-水印及画中画
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10434209.html 1. overlay技术简介 overlay技术又称视频叠加技术 ...
- FFMpeg笔记(六) 滤镜命名规则及使用libavfilter对视频尺寸进行裁切
在ffmpeg框架中,滤镜(filter)功能通过libavfilter库实现. 一个filter可以同时有多个输入和输出.以图为例: 图中的一系列操作共使用了四个filter,分别是 spli ...
- FFMPEG 最简滤镜filter使用实例(实现视频缩放,裁剪,水印等)
FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字符,然后从终端输出.我在该实例的基础上稍微的做了修改,使它能够保存滤镜处理过后的文件.在上代码之前先明白几个概念: Fi ...
- FFmpeg常用命令学习笔记(八)滤镜相关命令
滤镜相关命令 FFmpeg中关于滤镜命令有很多种.比如在视频中加入/删除水印.对视频做反转等等都属于滤镜. FFmpeg滤镜处理流程 解码后的数据帧 ---过滤处理---> 过滤后的数据帧 -- ...
随机推荐
- 微服务实战系列(二)-注册中心Springcloud Eureka客户端
1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册. 2. 解 ...
- 如何修改MySQL数据库名称
比如数据库名称old_db想改名为new_db MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的. 在 MySQL 5.1.23 之前的旧版本中,我们可以 ...
- Kubernetes Pod水平自动伸缩(HPA)
HPA简介 HAP,全称 Horizontal Pod Autoscaler, 可以基于 CPU 利用率自动扩缩 ReplicationController.Deployment 和 ReplicaS ...
- 安装zabbix3.0以及升级到5.0过程
关闭防火墙: systemctl stop firewalld.service systemctl disable firewalld.service 需要关闭 selinux,一定要关闭这个,开启s ...
- jvm优化案例
案例1 survivor区太小,每次Minor GC存活的对象进入老年代,导致老年代可用空间不足,经常发生FULL GC,导致系统变慢 案例问题描述 有一个数据计算系统,从mysql和其他数据源提取数 ...
- visual studio 2015 安装MSDN全称Microsoft Developer Network 安装离线的MSDN
MSDN: 微软向开发人员提供的一套帮助系统,其中包含大量的开发文档,技术文章和示例代码. 这里介绍了vs2015 装离线的MSDN(说明一点是,如果不行,说明你的文件有缺陷,没安装好,之前我用vs2 ...
- Arduino 寻找I2C地址address
参考:http://henrysbench.capnfatz.com/henrys-bench/arduino-projects-tips-and-more/arduino-quick-tip-fin ...
- Object.assign()的使用
一.Object.assign()对象的拷贝 1 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 2 Object.assign(ta ...
- 学习WebDav
目录 前言 初识WebDav 有哪些支持webdav的网盘? WebDAV的特性和优势 服务端的搭建 调用WebDav接口 PROPFIND方法 PROPPATCH方法 MKCOL方法 PUT方法 G ...
- 在linux下搭建l2tp隧道
搭一个l2tp隧道,拓扑如下 两台机器是CentOS5,内核选上CONFIG_LEGACY_PTYS选项后自己编译的,l2tp是已经停更的l2tpd-0.69.先在LS上配置IP地址,iptables ...