ffmpeg学习记录

1、对图片进行裁剪

ffmpeg -i input.jpg -vf crop=iw/3:ih:20:0 caijian.jpg

PS:

crop=100:100:12:34

相同效果:

crop=w=100:h=100:x=12:y=34

2、视频增加文字水印

使用drawtext滤镜进行增加水印

参数

类型

说明

text

字符串

文字

textfile

字符串

文字文件

box

布尔

文字区域背景框(缺省false)

boxcolor

色彩

展示字体区域块的颜色

font

字符串

字体名称(默认为Sans字体)

fontsize

整数

显示字体的大小

x

字符串

缺省为0

y

字符串

缺省为0

alpha

浮点数

透明度(默认为1),值从0~1

为视频增加一个水印 

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green:box=1:boxcolor=yellow"

 增加一个时间做为水印,在使用ffmpeg转码存储到文件时需要加上-re,否则时间不对

ffplay  -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow"

 转成视频

ffmpeg -re -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow" out.mp4

增加一个闪烁的水印,使用drawtext与enable配合即可,例如每3秒钟显示一次文字水印

ffplay -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='test':fontcolor=green:box=1:boxcolor=yellow:enable=lt(mod(t\,3)\,1)"

跑马灯效果

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='helloworld':x=mod(100*t\,w):y=abs(sin(t))*h*0.7"

3、视频增加图片水印

为视频添加图片水印可以使用movie滤镜

参数

类型

说明

filename

字符串

输入的文件名,可以是文件,协议,设备

format_name, f

字符串

输入的封装格式

stream_index, si

整数

输入的流索引编号

seek_point, sp

浮点数

Seek输入流的时间位置

streams, s

字符串

输入的多个流的流信息

loop

整数

循环次数

discontinuity

时间差值

支持跳动的时间戳差值

为视频增加图片水印

ffplay -i input.mp4  -vf "movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]" -x 500

其中一些参数说明

参数

说明

main_w

视频单帧图像宽度

main_h

视频单帧图像高度

overlay_w

水印图片的宽度

overlay_h

水印图片的高度

对应地可以将overlay参数设置成如下值来改变水印图片的位置:

水印图片位置

overlay值

左上角

10:10

右上角

main_w-overlay_w-10:10

左下角

10:main_h-overlay_h-10

右下角

main_w-overlay_w-10:main_h-overlay_h-10

跑马灯效果

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=mod(50*t\,main_w):y=abs(sin(t))*h*0.7[out]"

4、生成画中画

在FFmpeg中,可以通过overlay将多个视频流、多个多媒体采集设备、多个视频文件合并到一个界面中,生成画中画的效果

参数

类型

说明

x

字符串

X坐标

y

字符串

Y坐标

eof_action

整数

遇到eof表示时的处理方式,默认为重复

  • repeat(值为0):重复前一帧
  • endcall(值为1):停止所有的流
  • pass(值为2):保留主图层

shortest

布尔

终止最短的视频时全部终止(默认false)

format

整数

设置output的像素格式,默认为yuv420

  • yuv420 (值为0)
  • yuv422 (值为1)
  • yuv444 (值为2)
  • rgb (值为3)

从参数列表中可以看到,主要参数并不多,但实际上在overlay滤镜使用中,还有很多组合的参数可以使用,可以使用一些内部变量,例如overlay图层的宽、高、坐标等。

 显示画中画

ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20[out]"

ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20:eof_action=1[out]"

ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20:shortest =1[out]"

缩放画面尺寸

ffplay -i input.mp4 -vf "movie=sub_320x240.mp4,scale=640x480[sub];[in][sub]overlay=x=20:y=20[out]"

跑马灯

ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[test];[in][test]overlay= x=mod(50*t\,main_w):y=abs(sin(t))*main_h*0.7[out]"

5、视频多宫格

从前文中可以看出进行视频图像处理时,overlay滤镜为关键画布,可以通过FFmpeg建立一个画布,也可以使用默认的画布。如果想以多宫格的方式展现,则可以自己建立一个足够大的画布,下面就来看一下多宫格展示的例子:

ffmpeg -i 1.mp4 -i 2.mp4 -i  3.mp4 -i  4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v] setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS, scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" out.mp4

1.2.3.4.mp4为文件路径,out.MP4为输出文件路径,通过nullsrc创建overlay画布,画布大小640:480,

使用[0:v][1:v][2:v][3:v]将输入的4个视频流去除,分别进行缩放处理,然后基于nullsrc生成的画布进行视频平铺,命令中自定义upperleft,upperright,lowerleft,lowerright进行不同位置平铺。

 

 

只叠加左上右上的命令:

ffmpeg -i 1.mp4 -i 2.mp4 -i  3.mp4 -i  4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v]setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320" out2.mp4

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于LLAMA-7B的lora中文指令微调

目录 1. 选用工程2. 中文llama-7b预训练模型下载3. 数据准备4. 开始指令微调5. 模型测试 前言: 系统:ubuntu18.04显卡:GTX3090 - 24G (惨呀,上次还是A100,现在只有3090了~) (本文旨在…

【Python】基于Python的机器学习分类的模型选择:交叉验证和模型质量评估

目录 1 简介2 思路分解与说明3 完整代码 1 简介 最近完成一个工作,就基于一些表格化的数据进行机器学习分类。 由于分类是研究中的关键步骤,所以首先要选择到底哪个模型适合我们的分类任务。 比较传统且经典的选择方法就是用交叉验证。 交叉验证是什么可…

传输控制协议 TCP

文章目录 一、TCP报文格式1.报头格式2.TCP最大段长度 MSS 二、TCP连接建立与释放1.连接建立:三次握手2.报文传输3.连接释放:四次挥手4.保持定时器与时间等待定时器 三、TCP差错重传1.字节流状态分类与滑动窗口(发送)① 滑动窗口两…

Spring Boot中的Elasticsearch自动配置

Spring Boot中的Elasticsearch自动配置 Elasticsearch是一个基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序…

【探索 Kubernetes|作业管理篇 系列 16】离线业务 Job、CronJob

前言 大家好,我是秋意零。 在上一篇中,我们讲解了 DaemonSet 控制器,相信你以及理解了其的工作过程,分为三部。一是,获取所有 Node 节点中的 Pod;二是,判断是否有符合 DaemonSet 管理的 Pod&a…

Linux基础工具|C/C++编译器:gcc/g++的使用

1.基础使用 gcc是专门用来编译C语言的编译器,而g是编译C的编译器(也可以编译C语言,毕竟C语言兼容C)。Linux下gcc默认使用8字节的指针。 下载安装:gcc的安装指令“sudo yum install gcc”(在Linux里大部分…

固态硬盘优化设置

文章目录 前言关闭Windows Search禁用系统保护(不建议)不建议禁用系统保护原因 关闭碎片整理提升固态硬盘速度开启TRIM合理使用固态硬盘的容量正确关机关闭开机自启 前言 提示:这里可以添加本文要记录的大概内容: 电脑配备固态硬…

大数据Doris(五十六):RESOTRE数据恢复

文章目录 RESOTRE数据恢复 一、RESTORE数据恢复原理 二、RESTORE 数据恢复语法 三、RESOTRE数据恢复案例 1、在 Doris 集群中创建 mydb_recover 库 2、执行如下命令恢复数据 3、查看 restore 作业的执行情况 四、注意事项 RESOTRE数据恢复 Doris 支持BACKUP方式将当前…

1.3 Metasploit 生成SSL加密载荷

在本节中,我们将介绍如何通过使用Metasploit生成加密载荷,以隐藏网络特征。前一章节我们已经通过Metasploit生成了一段明文的ShellCode,但明文的网络传输存在安全隐患,因此本节将介绍如何通过生成SSL证书来加密ShellCode&#xff…

BUU [网鼎杯 2020 青龙组]AreUSerialz

BUU [网鼎杯 2020 青龙组]AreUSerialz 先看题目&#xff0c;是个php反序列化。源码如下。 <?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename; protected $content;function __construct(…

openwrt使用记录

背景&#xff1a; 平时在vmware中做实验时候&#xff0c;经常需要在不同的机器上下载一些github上的项目进行调试&#xff0c;之前解决方案是在路由器层小米ac2100上装openwrt&#xff0c;试用一番发现太卡了。放弃&#xff0c;这次在vmware中安装作为小米ac2100的旁路由 规划…

全新QQ架构的“NT”版来袭

最近&#xff0c;全新发布的"NT"架构的QQ迎来了更新&#xff0c;同时面向用户开放了下载渠道&#xff0c;有些用户戏称为NT为脑瘫版本&#xff08;bushi&#xff09;苏音体验了以后&#xff0c;描述为&#xff1a;清爽简约还很流畅。 先来看看原来的QQ与现在的NT版本…