音视频添 加水印

简介: 音视频添 加水印

一、文字水印

在视频中增加文字水印需要准备的条件比较多,需要有文字字库处理的相关文件,在编译FFmpeg时需要支持FreeType、FontConfig、iconv,系统中需要有相关的字库,在FFmpeg中增加纯字母水印可以使用drawtext滤镜进行支持,下面就

来看一下drawtext的滤镜参数

参数 类型 说明
text 字符串 文字
textfile 字符串 文字文件
box 布尔 文字区域背景框(缺省false)
boxcolor 色彩 展示字体区域块的颜色
font 字符串 字体名称(默认为Sans字体)
fontsize 整数 显示字体的大小
x 字符串 缺省为0
y 字符串 缺省为0
alpha 浮点数 透明度(默认为1),值从0~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"

(2)文字水印还可以增加一个框,然后给框加上背景颜色:

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

至此,文字水印的基础功能已经添加完成。

(3)有些时候文字水印希望以本地时间作为水印内容,可以在drawtext滤镜中配合一些特殊用法来完成,在

text中显示本地当前时间,格式为年月日时分秒的方式,

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,否则时间不对。

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

(4)在个别场景中,需要定时显示水印,定时不显示水印,这种方式同样可以配合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,否则时间不对。

(5)跑马灯效果

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"

修改字体透明度,修改字体颜色

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, si 整数 输入的流索引编号
seek_point, sp 浮点数 Seek输入流的时间位置
streams, s 字符串 输入的多个流的流信息
loop 整数 循环次数
discontinuity 时间差值 支持跳动的时间戳差值
ffmpeg -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]" output.mp4
Ø 原始视频文件路径:input.mp4
Ø 水印图片路径:logo.png
Ø 水印位置:(x,y)=(10,10)<=(left,top)距离左侧、顶部各10像素;
Ø 输出文件路径:output.mp4

overlay过滤器

描述:前景窗口(第二输入)覆盖在背景窗口(第一输入)的指定位置。

语法:overlay[=x:y[[:rgb={0, 1}]]

参数 x 和 y 是可选的,默认为 0。

参数 rgb 参数也是可选的,其值为 0 或 1,默认为 0。

参数说明:

x 从左上角的水平坐标,默认值为 0

y 从左上角的垂直坐标,默认值为 0

rgb 值为 0 表示输入颜色空间不改变,默认为 0;值为 1 表示将输入的颜色空间设置为 RGB

参数 说明
main_w 或 W 视频单帧图像宽度
main_h 或 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中加入图片水印有两种方式,一种是通过movie指定水印文件路径,另外一种方式是通过filter读取输入文件的流并指定为水印,这里重点介绍如何读取movie图片文件作为水印


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs


相关文章
|
2月前
|
编解码
音视频录制播放原理
音视频录制播放原理
67 1
|
2月前
|
前端开发 数据安全/隐私保护
canvas实现添加水印
canvas实现添加水印
|
9月前
|
缓存 监控 前端开发
调用摄像机播放画面,并且实现录制GIF动图预览和下载
调用摄像机播放画面,并且实现录制GIF动图预览和下载
|
数据安全/隐私保护
图片一键添加水印工具V1.0-免费版
该图片一键添加水印工具V1.0可以批量把常见图片格式('.bmp', '.png', '.jpg', '.jpeg', '.dib', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')一键添加水印。默认在图片右下角添加水印。
285 0
图片一键添加水印工具V1.0-免费版
|
数据安全/隐私保护 计算机视觉
使用opencv给视频添加水印
使用opencv给视频添加水印
287 0
使用opencv给视频添加水印
|
程序员 数据安全/隐私保护 iOS开发
一日一技:如何批量给PDF添加水印?
一日一技:如何批量给PDF添加水印?
424 0
一日一技:如何批量给PDF添加水印?
|
编解码 数据安全/隐私保护 开发者
为视频添加水印 | 学习笔记
快速学习为视频添加水印
514 0
|
文件存储 Android开发 数据安全/隐私保护
Android图片添加水印图片并把图片保存到文件存储
Android图片添加水印图片并把图片保存到文件存储 package zhangphil.test; import android.
1473 0
|
缓存 Java 数据安全/隐私保护
给图片加水印?这是我见过最简单的实现方式
大家好,我是指北君。 在项目中经常有需要在图片上添加水印的需求以及在某些场合下需要身份证图片,这时就可以对身份证上加水印防止被用于其他用途,java 在处理图片水印时不需要额外的第三方包,使用 BufferedImage 和 Graphics2D 就可以搞定
给图片加水印?这是我见过最简单的实现方式
|
Ubuntu 数据安全/隐私保护
FFMPEG音频视频开发: 使用FFMPEG给视频帧添加水印
FFMPEG音频视频开发: 使用FFMPEG给视频帧添加水印
431 0
FFMPEG音频视频开发: 使用FFMPEG给视频帧添加水印