CDN加速

视频添加水印

更新时间:2020-04-29 21:17:52

一. 功能简介

    水印是一种轻量级的版权保护方式,网宿点播平台支持在指定位置添加图片水印、视频水印和文字水印,也支持实现动态水印。

(1) 图片水印: 支持自适应缩放, 即按视频分辨率变化比例最大值调整水印图片大小。

(2) 视频水印:一般适用于在源视频中插入广告视频,又不影响主体视频播放的应用场景。

(3) 文字水印:不支持自适应缩放。

(4) 动态水印:水印支持按照一定的时间间隔或者指定时间变换位置。

二. 功能说明

    视频添加水印,支持常见的视频/音频封装格式和编码格式的源文件,如:

(1) 视频格式: MP4、FLV、M3U8、TS、MKV、MOV、WMV、AVI、VP8、VP9、RealVideo、Windows Media Video等;

(2) 音频格式:AAC、AC-3、MP1、MP2、MP3、PCM、RealAudio、Windows Media Audio(WMA)、OGG等;

(3) 编码格式:H.265、H.264、H.263、MPEG等。

    客户上传视频文件的时候,可以同时配置添加水印操作参数,也可以同时配合使用视频转码、视频转封装、音视频操作等功能,即可通过同一条API命令实现多个功能。

2.1. 请求说明


    请求参数以如下格式组织,作为请求内容提交:


bucket=<Urlsafe_Base64_Encoded_Bucket>&key=<Urlsafe_Base64_Encoded_Key>&fops=<Urlsafe_Base64_Encoded_Fops>&notifyURL=<Urlsafe_Base64_Encoded_PersistentNotifyUrl>&force=<Force>&separate=<Separate>

表1 请求参数说明
参数 必填 描述
bucket 空间名,即:原文件所在的空间
key 文件名,即:原文件的文件名
fops 视频添加水印参数列表;支持同时请求多个处理,参数列表之间用; 分隔,即:fops=Urlsafe_Base64_Encode(操作1;操作2;……)
notifyURL 处理结果通知接收URL,通知数据详细说明处理后的内容信息,比如视频码率、时长等。请参考通知数据内容说明
force 是否强制执行数据处理。支持设置以下数值:
(1)0:指定的数据处理结果如果存在,返回文件已存在,不进行处理,避免重复处理浪费资源;
(2)1:强制执行数据处理并覆盖已有文件;
默认为0。
separate 处理是否分开通知。支持设置以下数值:
(1)0:表示所有转码指令执行完后再一次性通知notifyURL
(2)1:表示每个转码指令执行完后都通知notifyURL
默认为0。

    使用以下格式填充参数后,并将其URL安全的Base64编码后的值填充到fops参数中:


<op>/<Format>
    /wmImage2/<Urlsafe_Base64_Encode(<bucket>:<key>)>
    /wmGravity/<Gravity>
    /wmauto/<wmauto>
    /wmWidth/<WmWidth1>,<WmWidth2>...
    /wmHeight/<WmHeight1>,<WmHeight2>...
    /wmDissolve/<alpha1>,<alpha2>...
    /wmdx/<dx1>,<dx2>…
    /wmdy/<dy1>,<dy2>…
    /wmInterval/<wmInterval>
    /multiConvertTime/<ConvertTime1>,<ConvertTime2>...
    /wmText/<Urlsafe_Base64_Encode(<Text1>),<Urlsafe_Base64_Encode(<Text2>)...
    /wmFont/<Urlsafe_Base64_Encode(<Color1>,<Color2>...)>
    /wmFontColor/<Urlsafe_Base64_Encode(<Font1>,<Font2>...)>
    /wmFontSize/<size1>,<size2>...
    /wmFontDissolve/<alpha1>,<alpha2>...
    /wmFontBorderWidth/<w1>,<w2>...
    /wmFontBorderColor/<Urlsafe_Base64_Encode(<Color1>,<Color2>...)>
    /wmTextGravity/<gravity1>,<gravity2>...
    /wmtextdx/<dx1>,<dx2>...
    /wmtextdy/<dy1>,<dy2>...
    /wmTextInterval/<interval1>,<interval2>...
    /wmFontBold/<b1>,<b2>...
|saveas/<Urlsafe_Base64_Encode(bucket:filekey)>
表2 水印参数表
参数 必填 描述
<op> avthumb(操作类型-音视频处理)
<format> 输出的目标格式,支持mp4、flv、m3u8等。
|saveas/<bucket:filekey> 保存为指定文件,参数中需要填入"空间: 文件名"URL安全的Base64编码后的值。
图片水印、视频水印参数
/wmImage2/<Urlsafe_Base64_Encode(<bucket1> :<key1> ,<bucket2> :<key2> ...)> 图片&视频水印列表,采用“,”分隔多个水印图片路径,需要经过URL安全的Base64编码。
/wmGravity/<Gravity1> ,<Gravity2> … 水印位置,参见“表6视频偏移参数表”。
/wmauto/<wmauto> 根据视频转码分辨率变化自适应缩放图片&视频水印,为1则若转码有进行分辨率操作,则图片&视频水印进行自适应缩放,否则为原图片&视频水印大小。
例如:原视频1200x600,水印40x40,输出分辨率设置为300x200,则最终添加水印图片大小为10x10。
/wmWidth/<WmWidth1> ,<WmWidth2> ... 图片&视频水印的分辨率宽。可以是像素或者百分比。其中百分代表水印图片占用输出视频画面大小的百分比。
例如:wmWidth=50%&wmHeight=20%代表水印大小宽度为输出画面的一半,高度为输出画面的1/5。wmWidth=40&wmHeight=60代表水印大小分辨率为40x60,以像素为单位。特殊说明:当wmWidth或者wmHeight的值为0或者小于0时,代表自适应;当wmWidth和wmHeight两个元素都为0或者负值时,代表对于这个水印,不启用设置分辨率的功能。
/wmHeight/<WmHeight1> ,<WmHeight2> ... 图片&视频水印分辨率高。可以是像素或者半分比。举例和说明见wmWidth参数。
/wmDissolve/<alpha1> ,<alpha2> ... 图片&视频水印透明度,支持变换,数字类型。范围为[0,100]。其中100为不透明,0为全透明。当超过这个范围时,自动被限制到这个范围。比如-4变成0,120变成100。默认值:100。
/wmdx/<dx1> ,<dx2> … 用于对视频图片水印位置在偏移列表的基础上做横向微调,当值为正数时则向右偏移,反之向左。指定该参数时,wmGravity为必填,且参数个数与wmGravity保持一致。
/wmdy/<dy1> ,<dy2> … 用于对视频图片水印位置在偏移列表的基础上做纵向微调,当值为正数时则向下偏移,反之向上。指定该参数时,wmGravity为必填,且参数个数与wmGravity保持一致。
/wmInterval/<wmInterval> 发生水印变换的时间间隔,单位是:秒。
/multiConvertTime/<ConvertTime1> ,<ConvertTime2> ... 开始发生水印变换的视频文件时间列表,采用“,”分隔,单位是:秒。
注:与wmInterval参数不可共用
文字水印参数
/wmText/Urlsafe_Base64_Encode(<Text1>),Encode(<Text2>)... 文字列表,若需要支持变换,不同于图片/视频水印,文字水印ship 需要每串文字先进行URL安全的Base64编码后,再用逗号连接到一块(考虑到文字包含逗号)。中文需要是UTF-8编码,否则可能显示乱码。
/wmFont/<Urlsafe_Base64_Encode(<Color1>,<Color2>...)> 文字水印字体名字,若需要支持变换,字体名先用逗号连接字体名字列表,再URL安全的Base64编码。字体名字只能包含数字、大小写字母、空格和减号“-”。
/wmFontColor/<Urlsafe_Base64_Encode(<Font1>,<Font2>...)> 文字水印字体颜色,若需要支持变换,字体颜色先用逗号连接,再URL安全的Base64编码。其中每一项颜色是形如0xrrggb或&Hrrggbb的字符串(大小写不敏感),分别代表颜色RGB分量,也可以省略0x或&H前缀。颜色格式需要正确。默认值:0xffffff,即白色。
/wmFontSize/<size1>,<size2>... 文字水印字体大小,支持变换。整数类型,整数后面可加一个百分号。可以有两种形式,即像素和百分比形式。当数字后面有百分号时,是指字体占输出画面高度的百分比;反之为绝对像素大小。比如10代表10个像素高,而10%代表字体高度为输出画面高度10%。当为像素时,需要在[5,2160]范围内。当为百分比时,需要在(0,100%]范围内。默认值:6%。
/wmFontDissolve/<alpha1>,<alpha2>... 文字水印文字透明度,支持变换,数字类型。范围为[0,100]。其中100为不透明,0为全透明。当超过这个范围时,不会报错,自动被限制到这个范围。比如-4变成0,120变成100。默认值:100。
/wmFontBorderWidth/<w1>,<w2>... 文字水印字体描边,支持变换,整数类型。小于或等于0为不描边;否则为描边。默认值:0。
/wmFontBorderColor/<Urlsafe_Base64_Encode(<Color1>,<Color2>...)> 文字水印字体描边颜色,若需要支持变换,字体描边颜色先用逗号连接,再URL安全的Base64编码。格式同wmFontColor。默认值:0x000000,即黑色。
/wmTextGravity/<gravity1>,<gravity2>... 文字水印文字位置,字符串类型,大小写不敏感,若需要支持位置变换,预设位置以逗号分割。格式同wmGravity。必须是9个预设值之一。默认值:top_right。
/wmtextdx/<dx1>,<dx2>... 文字水印文字位置预设基础上的水平偏移,支持变换,整数类型。格式和含义类似wmdx。默认值:0。
/wmtextdy/<dy1>,<dy2>... 文字水印文字位置预设基础上的竖直偏移,支持变换,整数类型。格式和含义类似wmdy。默认值:0 。
/wmTextInterval/<interval1>,<interval2>... 文字水印切换的时间间隔,支持变换,单位为秒,数字类型。格式和含义类似wmInterval.需要大于或等于1。
/wmFontBold/<b1>,<b2>... 文字水印字体是否粗体,支持变换,整数类型。0代表文字不使用粗体。非0代表使用粗体。默认值:0
表3 视频偏移参数表
参数 说明
TOP_LEFT 左上角为坐标原点,x轴从左到右,y轴从上到下,也是默认值
TOP_CENTER 上部中间位置为坐标原点,x轴从左到右,y轴从上到下。
TOP_RIGHT 右上角位置为坐标原点,x轴从右到左,y轴从上到下。
CENTER_LEFT 左边缘中间位置为坐标原点,x轴从左到右,y轴从上到下。
CENTER 正中间位置为坐标原点,x轴从左到右,y轴从上到下。
CENTER_RIGHT 右边缘的中间位置为坐标原点,x轴从右到左,y轴从上到下。
BOTTOM_LEFT 左下角为坐标原点,x轴从左到右,y轴从下到上。
BOTTOM_CENTER 下边缘的中间为坐标原点,x轴从左到右,y轴从下到上。
BOTTOM_RIGHT 右下角坐标原点,x轴从右到左,y轴从下到上。

2.2. 响应说明


    如果请求成功,则返回如下内容的Json串:

{ "persistentId": <persistentId> }  

    如果请求失败,则返回如下内容的Json串:

{
  "code": "<code string>",
  "message":  "<ErrMsg string>"
} 
表4 响应参数说明
字段名 必填 描述
persistentId 上传预处理或者触发持久化处理的进程ID
code HTTP请求响应码,参见HTTP响应状态码<返回码>
message 处理失败的提示信息

2.3. 使用范例

2.3.1. 添加图片水印
    实现将vod-wcs-test001空间名下的test.mp4视频在画面左上角增加图片水印,水印图片位于vod-wcs-test001空间名下名称为watermark.jpg,且每隔5s进行动态变换,实现效果为:

  (1) 最开始视频水印置于画面左上角;

  (2) 5s后变换到画面右上角向左偏移20个像素点的位置;

  (3) 5s后再变换到左上角……如此反复。

    将处理后的视频文件存到vod-wcs-test001空间下,命名为test_watermark.mp4。


 curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/mp4/wmImage2/Urlsafe_Base64_Encode(vod-wcs-test001:watermark.jpg) /wmGravity/TOP_LEFT,TOP_RIGHT/wmInterval/5/wmdx/0,-20/wmdy/0,0/wmWidth/20%/wmHeight/20%|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_watermark.mp4))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

加密后为:


curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tcDQvd21JbWFnZTIvZG05a0xYZGpjeTEwWlhOME1EQXhPbmRoZEdWeWJXRnlheTVxY0djPS93bUdyYXZpdHkvVE9QX0xFRlQsVE9QX1JJR0hUL3dtSW50ZXJ2YWwvNS93bWR4LzAsLTIwL3dtZHkvMCwwL3dtV2lkdGgvMjAlL3dtSGVpZ2h0LzIwJXxzYXZlYXMvZG05a0xYZGpjeTEwWlhOME1EQXhPblJsYzNSZmQyRjBaWEp0WVhKckxtMXdOQT09&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

其中:

  (1) mgrAuthorization_A:mgrAuthorization_B:管理凭证,由AK(访问密钥)、SK(安全密钥)、Path、Path、Body通过管理凭证生成工具生成,其中AK、SK从“SI-云存储-安全管理-密钥管理”处获取,Path为/fops,Body为请求内容。

  (2) mgrDomain:管理域名,从“SI-云存储-安全管理-域名查询”处获取。

2.3.2. 添加视频水印

    实现将vod-wcs-test001空间名下的test.mp4视频左上角添加视频动态水印,水印视频位于vod-wcs-test001空间名下名称为watermark.mp4,且水印视频占主体视频的1/5,将处理后的视频文件存到vod-wcs-test001空间下,命名为test_video.mp4。


 curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/mp4/wmImage2/Urlsafe_Base64_Encode(vod-wcs-test001:watermark.mp4)/wmGravity/TOP_LEFT/wmWidth/20%/wmHeight/20%|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_video.mp4))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

加密后为:


curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tcDQvd21JbWFnZTIvZG05a0xYZGpjeTEwWlhOME1EQXhPbmRoZEdWeWJXRnlheTV0Y0RRPS93bUdyYXZpdHkvVE9QX0xFRlQvd21XaWR0aC8yMCUvd21IZWlnaHQvMjAlfHNhdmVhcy9kbTlrTFhkamN5MTBaWE4wTURBeE9uUmxjM1JmZG1sa1pXOHViWEEw&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

参数解释请参考2.3.1. 添加图片水印。

2.3.3. 添加文字水印

    实现将vod-wcs-test001空间名下的test.mp4视频在画面左上角增加文字水印“网宿科技 点播加速”,字体为Arial Unicode MS,并将处理后的视频文件存到vod-wcs-test001空间下,命名为test_file.mp4。


 curl -v -X POST –d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test.mp4)&fops=Urlsafe_Base64_Encode(avthumb/mp4/wmText/Urlsafe_Base64_Encode(网宿科技 点播加速)/wmFont/Urlsafe_Base64_Encode(Arial Unicode MS)/wmTextGravity/TOP_LEFT|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:test_file.mp4))&force=1&separate=1" –H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

加密后为:


curl -v -X POST -d"bucket=dm9kLXdjcy10ZXN0MDAx&key=dGVzdC5tcDQ=&fops=YXZ0aHVtYi9tcDQvd21UZXh0L0ppTjROMFkxTVRzbUkzZzFRa0pHT3lZamVEYzVSREU3SmlONE5qSTRNRHNnSmlONE56QkNPVHNtSTNnMk5FRkVPeVlqZURVeVFUQTdKaU40T1RBeFJqcz0vd21Gb250L1FYSnBZV3dnVlc1cFkyOWtaU0JOVXc9PS93bVRleHRHcmF2aXR5L1RPUF9MRUZUfHNhdmVhcy9kbTlrTFhkamN5MTBaWE4wTURBeE9uUmxjM1JmWm1sc1pTNXRjRFE9&force=1&separate=1" -H "Authorization:mgrAuthorization_A:mgrAuthorization_B" --url "http://mgrDomain/fops"

  (1) “网宿科技 点播加速”UTF-8编码为:#x7F51;#x5BBF;#x79D1;#x6280; #x70B9;#x64AD;#x52A0;#x901F;

  (2) 其余参数解释请参考 2.3.1. 添加图片水印。

三. 应用场景

  (1) 实现轻量级版权保护;

  (2) 添加广告视频作为水印,提高营收。

四. 注意事项

  (1) 视频添加水印功能只能对存储于云存储(WCS)上的视频文件进行操作,因此必须同时开通点播和云存储功能。

  (2) 视频添加水印功能属于增值服务,若要使用需另行付费。