linux服务器中学习使用FFmpeg命令overlay滤镜用法

  • 1、overlay技术简介
  • 2、命令行用法
    • 2.1 视频中叠加图标
      • 2.1.1 直接叠加图标
      • 2.1.2 延时叠加图标
    • 2.2 视频中叠加视频——画中画
      • 2.2.1 叠加计时器
  • 3、API用法
  • 4、增加多个水印

1、overlay技术简介

overlay技术又称视频叠加技术。overlay视频技术使用非常广泛,常见的例子有,电视屏幕右上角显示的电视台台标,以及画中画功能,画中画是指在一个大的视频播放窗口中还存在一个小播放窗口,两个窗口不同的视频内容同时播放。

overlay技术中涉及两个窗口,通常把较大的窗口称作背景窗口,较小的窗口称作前景窗口,背景窗口或前景窗口里都可以播放视频或显示图片。FFmpeg中使用overlay滤镜可实现视频叠加技术。

overlay滤镜说明如下:

描述:前景窗口(第二输入)覆盖在背景窗口(第一输入)的指定位置。语法:overlay[=x:y[[:rgb={0, 1}]] 参数x和y是可选的,默认为0。rgb参数是可选的,其值为0或1,默认为0。参数说明:x               从左上角的水平坐标,默认值为0y               从左上角的垂直坐标,默认值为0rgb             值为0表示输入颜色空间不改变,默认为0;值为1表示将输入的颜色空间设置为RGB变量说明:如下变量可用在x和y的表达式中main_w或W       主输入(背景窗口)宽度main_h或H       主输入(背景窗口)高度overlay_w或w    overlay输入(前景窗口)宽度overlay_h或h    overlay输入(前景窗口)高度

overlay滤镜相关参数示意图如下:

2、命令行用法

可先参考“FFmpeg使用基础”了解命令行用法基础

overlay命令行基本格式如下:

ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output

input1是背景窗口输入源,input2是前景窗口输入源。

2.1 视频中叠加图标

背景窗口视频素材下载:ring.mp4

视频分辨率是768x432(此分辨率适用于平板电脑,宽高比为16:9),上下黑边的像素高度是56,播放时长为37.97秒。关于分辨率与黑边的相关内容可参考如下:
为什么很多人把视频上下加黑条当做“电影感”?
用于编码视频文件的视频预设

前景窗口图标素材下载:ring_100x87.png


图标分辨率是100x87。图标格式为PNG格式,当然选用其他格式的图片作图标也是可以的,但PNG图标具有透明背景,更适合用作图标。

2.1.1 直接叠加图标

将图标叠加于视频右上角

ffmpeg -i ring.mp4 -i ring_100x87.png -filter_complex overlay=W-w:56 -max_muxing_queue_size 1024 ring_logo_t.mp4

效果如下:
将图标叠加于视频右下角

ffmpeg -i ring.mp4 -i ring_100x87.png -filter_complex overlay=W-w:H-h-56 -max_muxing_queue_size 1024 ring_logo_b.mp4

效果如下:

2.1.2 延时叠加图标

如下,背景窗口播放8.6秒后,图标开始显示。注意“-itsoffset 8.6”作为第二个输入文件的输入选项,参数位置不能放错。

ffmpeg -i ring.mp4 -itsoffset 8.6 -i ring_100x87.png -filter_complex overlay=W-w:56 -max_muxing_queue_size 1024 ring_logo_delay.mp4

2.2 视频中叠加视频——画中画

视频中叠加视频即为画中画功能。注意两个视频仅图像部分会叠加在一起,声音是不会叠加的,有一个视频的声音会消失。

2.2.1 叠加计时器

找一个计时器小视频,将之叠加到背景视频上。我们可以从测试源中获取这个计时器视频。先运行如下命令:

ffplay -f lavfi -i testsrc

视频无法贴在本文里,那运行截图命令,从视频中截取一张图:

ffmpeg -ss 00:00:12 -f lavfi -i testsrc -frames:v 1 -f image2 testsrc.jpg

效果如下:

我们把计时器那一小块视频裁剪下来,运行如下命令:

ffmpeg -ss 00:00:10 -t 20 -f lavfi -i testsrc -vf crop=61:52:224:94 timer.h264

此命令主要用到了crop视频滤镜,说明一下:
“-vf crop=61:52:224:94”表示裁剪一块位于(224,94)坐标处宽为61像素高为52像素的视频块
“-ss 00:00:10 -t 20”表示从10秒处开始裁剪,裁剪时长为20秒

将计时器视频timer.h264叠加到背景视频ring.mp4里:

ffmpeg -i ring.mp4 -i timer.h264 -filter_complex overlay=W-w:0 -max_muxing_queue_size 1024 ring_timer.mp4

3、API用法

使用滤镜API编程,解析不同的滤镜选项,以达到和命令行中输入命令同样的效果。

例程使用“FFmpeg滤镜API用法与实例解析”中第4.2节的示例程序
代码目录https://github.com/leichn/exercises/blob/master/source/ffmpeg/ffmpeg_vfilter/
下载代码,进入代码目录,在命令行运行make vf_file命令,将生成vf_file可执行文件
在命令行运行

 ./vf_file ring.flv -vf "movie=ring_100x87.png[logo];[in][logo]overlay=W-w:56"

测试效果为:

因为例程尚不支持多输入的方式,所以上述测试命令中借助了movie滤镜来加载第二个输入,这条命令和下面这条命令效果是一样的

 ffplay ring.mp4 -i ring_100x87.png -filter_complex overlay=W-w:56

4、增加多个水印

同一个视频不同的位置,添加水印命令如下:

ffmpeg  -i liugehetao.mp4 -i jiezhi.png -i jiezhi.png -i jiezhi.png -i jiezhi.png -i jiezhi.png  -filter_complex  overlay=10:10,overlay=10:main_h-overlay_h-10,overlay=main_w-overlay_w-10:10,overlay=main_w-overlay_w-10:main_h-overlay_h-10,overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2  liugehetao_new.mp4

效果图如下:

顶部居中,底部居中算法

ffmpeg  -i liugehetao.mp4 -i header.png -i footer.png  -filter_complex  overlay=main_w/2-overlay_w/2:0,overlay=main_w-overlay_w:main_h-overlay_h  liugehetao_22.mp4

linux服务器中学习使用FFmpeg命令overlay滤镜用法相关推荐

  1. linux服务器清除cdn,Linux服务器中查找并删除大文件的五种方法,Linux系统清除文件内容的命令分享...

    很多时候,在处理Linux终端中的文件时,您可能希望清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么能实现这一目标?在本文中,我们将借助一些有用的命令,通过几种不同的方式清空文件内容. ...

  2. linux批量删除screen,你不知道的linux系统中强大的screen命令

    linux系统中强大的screen命令可能很多用户还没感受到,下面介绍的就是linux系统中强大的screen命令,具体内容如下所述. 因为做二代测序分析的原因,经常需要运行很长时间的程序.由于时间很 ...

  3. 如何在远程的linux服务器中搭建禅道及bugfree

    如何在远程的linux服务器中搭建禅道及bugfree 一.介绍远程连接工具 1.首先连接远程的linux服务器,就需要使用连接工具及通过FTP上传工具. 远程连接的工具:putty和xshell 区 ...

  4. 如何将SpringBoot项目部署到阿里云Linux服务器中

    在此之前,我写了一个如何购买阿里云Windows服务器,并将自己的SpringBoot项目部署到Windows云服务器的博客,链接如下:https://blog.csdn.net/MagicMHD/a ...

  5. (一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战

    快捷目录 前言 一.涉及到的相关技术简介 二.具体实现过程及踩坑杂谈 1.安卓手机改造成linux系统实现方案 2.改造后的手机Linux中软件的安装 3.手机Linux中安装MySQL5.7踩坑实录 ...

  6. linux 封禁端口,如何在Linux服务器中使用防火墙封禁端口?

    我们知道服务器的防火墙是一种以软件为基础的网络安全系统,或者在某些情况下,是一种以硬件为基础的网络安全系统.它能自动监控系统中的流量流入和流出,并根据预先配置的规则阻止某些类型的数据流. 在Linux ...

  7. 如何访问Linux服务器中RabbitMQ管理页面

    大家好,本篇文章主要讲的是解决访问不到Linux服务器中RabbitMQ管理页面问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 由于自己项目的某项功能需要服务器中发送消息到 ...

  8. drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明

    按照本说明,你就可以成功的在Debian 10(Buster) Linux服务器中安装好drupal 8.8.0版本,已亲测能稳定运行. 先决条件 在开始安装之前,对安装的最低要求是: 数据库服务器, ...

  9. 新建一个文件夹服务器,云服务器中新建文件夹命令

    云服务器中新建文件夹命令 内容精选 换一换 部署提供可视化.一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化.本节通过以下五步介绍如何使用部署服务将项目代码部署到云主机 ...

最新文章

  1. 哈希表的分类,创建,查找 以及相关问题解决
  2. BCH首个Token奖励平台Honeypoints测试版已上线
  3. opengl载入多个3ds模型失败记
  4. 电力期刊论文实现:微电网经济调度(程序讲解)
  5. 操作系统:升级Windows 11正式版的四种方法,值得收藏!
  6. Spring mvc 请求体处理 @RequestBody
  7. 计算机游戏有哪几种,这些游戏你玩过几个? 你认为最经典的电脑游戏有哪些?
  8. AsyncTask源代码解析
  9. 二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)
  10. grafana设置mysql为数据源,并进行可视化
  11. mysql 5.6 参数详解
  12. 面试官:说说Mysql数据库分库分表,并且会有哪些问题?
  13. 从零开始的机器人比赛(一)——项目准备篇
  14. [ 2204阅读 ] 题型专项 - 句子简化题
  15. 换网站服务器需要备案吗,换服务器要重新备案吗?
  16. android 跳转腾讯地图导航,Android 跳转到百度、高德、腾讯地图导航
  17. OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()
  18. C语言错题集(指针2020/12/8)
  19. ExecuteScaler的三种返回值
  20. 推荐个比较好用的协同办公软件,帮助你高效办公

热门文章

  1. 向何志强学习什么(母校学报)
  2. (ZT)多么牛B的校长
  3. mysql判断男显示m_MySQL连表查询练习题
  4. Anki 但是Ubuntu
  5. html网页中怎么让图片旋转90度,css怎么让图片旋转90度
  6. 自学c语言第4天(补)
  7. R语言 | 常用统计量 基本函数 常规操作
  8. リモートからサーバにログオン中ユーザー調べ
  9. 新能源电机控制器简介
  10. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)