FFmpeg 命令:从入门到精通 |
您所在的位置:网站首页 › 滤镜有几种效果图片大全 › FFmpeg 命令:从入门到精通 |
FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)
FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)ffmpeg fliter 基本内置变量视频裁剪文字水印图片水印画中画视频多宫格处理
FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)
本节主要介绍了ffmpeg filter,列举了一些常用的滤镜及其使用方法。 ffmpeg 滤镜种类非常多,这也是 ffmpeg 学习的重难点。 ffmpeg fliter 基本内置变量 变量说明t以秒为单位表示的时间戳,如果输入的时间是未知的则是 NANn输入帧的顺序编号,从0开始pos输入帧的位置,如果是未知的则是 NANw输入视频帧的宽度h输入视频帧的高度 视频裁剪输入图像大小:iw * ih,起始坐标 (x, y),裁剪输出大小:ow * oh。 直接显示: ffplay -i input.jpg -vf crop=ow:oh:x:y输出图片: ffmpeg -i input.jpg -vf crop=ow:oh:x:y output.jpg裁剪中间区域,大小为 100 * 100: ffmpeg -i input.jpg -vf crop=100:100 output.jpg裁剪中间区域,大小为输入视频的 2/3: ffmpeg -i input.flv -vf crop=2/3*in_w:2/3*in_h output.flv裁剪中间区域的正方形,大小为输入视频的高: ffmpeg -i input.flv -vf crop=out_w=in_h output.flv或 ffmpeg -i input.flv -vf crop=in_h output.flv示例1: ffmpeg -i input.jpg -vf crop=iw/3:ih:iw/3:0 output.jpg从坐标 (iw/3, 0) 开始裁剪出一个宽度为 iw/3、高度为 ih 的图片,命名为 output.jpg 并保存。 input.jpg: output.jpg: 示例2: ffplay -i input.jpg -vf crop=iw/3:ih/2:0:0从坐标 (0, 0) 开始裁剪出一个宽度为 iw/3、高度为 ih/2 的图片,并显示: 在视频中增加文字水印需要准备的条件比较多,需要有文字字库处理的相关文件,在编译 FFmpeg 时需要支持 FreeType、FontConfig、iconv,系统中需要有相关的字库,在 FFmpeg 中增加纯字母水印可以使用 drawtext滤镜进行支持,下面就来看一下 drawtext 的滤镜参数: 参数类型说明text字符串文字内容textfile字符串存储文字内容的文件box布尔值文字区域背景框,默认为 falseboxcolor色彩展示字体区域块的颜色font字符串字体名称,默认为 Sans 字体fontsize整数字体大小x 和 y字符串文字水印出现的位置,以视频左上角为起始坐标,默认都为0alpha浮点数透明度,值为 0 ~ 1 的浮点数,默认为 1示例1:将文字的水印加在视频的左上角 ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20"将字体的颜色设置为绿色: ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green"如果想调整文字水印显示的位置,调整 x 与 y 参数的数值即可: ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green:x=400:y=200"修改透明度: ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green:x=400:y=200:alpha=0.5"文字水印还可以增加一个框,然后给框加上背景颜色: ffplay -i cuc_ieschool.mkv -vf "drawtext=fontsize=40:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green:box=1:boxcolor=yellow"效果: 注意:引号中间是整个滤镜的,每个参数用冒号隔开。 示例2:以本地时间作为水印内容 有些时候文字水印希望以本地时间作为水印内容,可以在 drawtext 滤镜中配合一些特殊用法来完成,在 text 中显示本地当前时间,格式为年月日时分秒的方式。 ffplay -i cuc_ieschool.mkv -vf "drawtext=fontsize=20:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow"效果: 注:时间会实时显示,不断变动。 在使用 ffmpeg 转码存储到文件时需要加上-re(表示按照时间戳来打水印,因为是在转码,1s会有多帧,按照当前时间显示会有异常),否则时间不对。 ffmpeg -re -i input.mp4 -vf "drawtext=fontsize=30:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow" output.mp4在个别场景中,需要定时显示水印,定时不显示水印,这种方式同样可以配合 drawtext 滤镜进行处理,使用 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)"注意:在使用 ffmpeg 转码存储到文件时需要加上 -re,否则时间不对。 表达式参考:FFmpeg Utilities Documentation 3 Expression Evaluation lt(x, y):Return 1 if x is lesser than y, 0 otherwise。x 小于 y 返回 1,否则返回 0mod(x, y):Compute the remainder of division of x by y。x 对 y 取余。示例3:跑马灯效果 跑马灯是指文字水印在视频界面上波动,也是根据 mod 公式动态的修改水平的 x, y 坐标达到跑马灯的效果。 ffplay -i input.mp4 -vf "drawtext=fontsize=30:fontfile=FreeSerif.ttf:text='helloworld':x=mod(100*t\,w):y=abs(sin(t))*h*0.7"效果:文字水印以正弦函数行式循环出现。 修改字体透明度,修改字体颜色: ffplay -i input.mp4 -vf "drawtext=fontsize=40:fontfile=FreeSerif.ttf:text='liaoqingfu':x=mod(50*t\,w):y=abs(sin(t))*h*0.7:alpha=0.5:fontcolor=white:enable=lt(mod(t\,3)\,1)"效果: FFmpeg 除了可以向视频添加文字水印之外,还可以向视频添加图片水印、视频跑马灯等。 为视频添加图片水印可以使用 movie 滤镜,下面就来熟悉一下 movie 滤镜的参数: 参数类型说明filename字符串输入文件名,可以是文件、协议、设备等format_name 或 f字符串输入文件的封装格式stream_index整数输入文件的流索引编号seek_point 或 sp浮点数输入流的时间位置streams 或 s字符串输入的多个流的流信息loop整数循环次数discontinuity时间差值支持跳动的时间戳差值 ffmpeg -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]" output.mp4参数: -i:原始视频文件路径水印图片路径:logo.png水印位置:(x, y) = (10, 10) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |