ffmpeg学习记录

这篇具有很好参考价值的文章主要介绍了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

ffmpeg学习记录

跑马灯效果

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图层的宽、高、坐标等。

ffmpeg学习记录

 显示画中画

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学习记录

 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];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320" out2.mp4

多宫格音频合并

ffmpeg -i .\test.mp4 -itsoffset 5 -i .\20.mp4 -filter_complex "[1:v]scale=320:240[v1];[0:v][v1]overlay=10:10;[1]adelay=5000|5000[a1];[0][a1]amix=inputs=2"  out.mp4 -y

用到的命令为
[1]adelay=5000|5000[a1];[0][a1]amix=inputs=2
意思是 将第二个文件(0为第一个文件)的音频延迟5秒播放,然后将第一个文件和第二个文件的音频叠加在一起。

后面合并的部分可以根据情况进行参数调整,一下为全部参数的缺省值

amix=inputs=2:duration=longest:dropout_transition=2:weights='1 1'文章来源地址https://www.toymoban.com/news/detail-491992.html

到了这里,关于ffmpeg学习记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python脚本】python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存

    我在进行目标检测时候,比如红绿灯检测,目标区域很小,样本杂乱。 想要筛选错误样本的话,很困难。可以把目标区域裁剪出来。人大脑处理对于这样的异己比较敏感。样本量较少的话可以自己筛一筛。样本量较大的话,可以训练一个分类模型帮你筛一下。 它就可以实现

    2024年02月15日
    浏览(34)
  • fabric.js 组件 图片上传裁剪并进行自定义区域标记

    目录 0. 前言 1. 安装fabric与引入 2. fabric组件的使用 3. 属性相关设置 4. 初始化加载 4. 方法 5. 全代码 利用fabric组件,实现图片上传、图片”裁剪“、自定义的区域标记一系列操作 先放一张效果图吧👇 我用的是全局引入方式,视情况调整  先放一个fabric.js API地址☞Api | Fabric中

    2024年01月22日
    浏览(73)
  • python opencv:批量识别拼接图片分界线并进行自动裁剪

    在网上找图片素材时,有很多的图片是长图片,在一张图片上拼接了许多张图片,而很多时候我们需要单张图片,此时就需要将长图进行裁剪,一般可以用图片工具进行简单裁剪,高级点可以采用ps进行切片处理,如果图片数量少还好说一旦有大量的图片需要裁剪就很繁琐并

    2024年02月11日
    浏览(36)
  • Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

    前言   近来公司有开发Arcgis脚本工具的需求,我就去学了一下用Arcpy来操作Arcgis的数据,今天学习了字段计算,将学习成果记录如下。   arcpy帮助文档传送门:https://resources.arcgis.com/zh-cn/help/main/10.2/ 一、字段计算 1、以python函数的形式进行字段计算   我们打开字段计算

    2024年02月11日
    浏览(30)
  • web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

    1、版本一的样式比较齐全; 2、版本二的JS逻辑和功能效果比较完善,且是别人的代码,后续会对样式进行完善。[Gitee | 哔哩哔哩]; 3、两个版本各有千秋,主要学习里面的一些技巧,这里主要介绍版本一的样式技巧; 4、行为验证码一般是后端实现,而且大概率是使用第三方

    2024年04月17日
    浏览(42)
  • ffmpeg将图片压缩成视频过程中的问题记录

    问题描述:服务器集群上在使用如下命令对img_path文件夹下的图片(图片名1.jpg……300.jpg)进行批量合成视频过程中,ffmpeg创建完视频文件后,写入过程中,自动kill,捕获异常为空。 问题原因:集群pods的内存不够,导致ffmpeg在创建完视频文件后,写入过程中内存不够,ffmpeg自动

    2024年02月12日
    浏览(39)
  • 使用ffmpeg对视频、图片进行旋转,上下翻转,水平翻转

    简介 :在使用ffmpeg做.h264编码后可能会使用vlc播放出现了图像垂直颠倒。可能的原因:RGB图像有两种存储方式:一种是从上往下扫描;另一种是从下往上扫描。OpenCV为从上往下扫描的方式,ffmpeg可能也是从上往下的存储方式,而OpenGL/Unity中的帧缓冲数据可能是从下往上的扫描

    2024年02月15日
    浏览(62)
  • 使用 ffmpeg-python+命名管道进行图片转视频或推流

    命名管道(Named Pipe),也被称为FIFO,是一种在UNIX、Linux和类Unix系统中用于实现进程间通信(IPC)的机制。在Python中,我们可以使用 os 模块来创建和操作命名管道。 命名管道实际上是个特殊的文件,需要先创建 读写前后需要打开关闭 ffmpeg从命名管道输入源的方法与普通文件

    2024年04月16日
    浏览(25)
  • ffmpeg裁剪视频画面

    FFmpeg 裁剪视频画面 - 哔哩哔哩 ffmpeg -i a.mp4 -vf crop=width:height:x:y b.mp4 x、y省略则居中裁剪。 iw输入视频宽度,ih输入视频高度。 ffmpeg -i a.mp4 -vf crop=iw/2:ih b.mp4

    2024年01月17日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包