视频水印
更新时间: 2021/03/26 22:00:50
录制生成的文件中默认未添加水印设置,出于信息安全、版权声明、防伪、宣传等目的,您可以为录制生成的视频文件添加水印,也可以为屏幕共享的辅流视频添加水印,例如添加公司名称或标语等文字水印、添加录制时间等时间戳水印。
本地服务端录制 SDK 支持以下三种水印设置:
- 文字水印:使用一段文字信息作为水印,支持设置字体和字号。
- 动态时间戳水印:使用录制服务器的当前时间作为水印,显示格式为“2019-06-18 14:30:35"。
- 静态图片水印:使用一张本地 PNG 图片作为水印。
添加水印
您可通过以下方法在录制文件中添加水印:
- 在调用 setVideoMixingLayout 设置合流布局时,设置 wm_num 和 wm_configs 参数添加水印。
- 直接调用 updateWatermarkConfigs ,设置wm_num 和 wm_configs 参数添加水印。
更新和删除水印
- 调用 setVideoMixingLayout 或 updateWatermarkConfigs 均可重新设置水印的个数和参数,也可以删除已添加的水印。
- 通过 updateWatermarkConfigs 方法,可以在更新或删除水印时,指定操作的是哪位用户、哪种类型的视频水印,例如指定更新用户 A 的辅流视频水印、删除用户 B 的主流视频水印。
- 删除全部已添加的水印,只能调用 updateWatermarkConfigs,将 wm_num 设为 0,configs 设置为空。
- 调用 updateWatermarkConfigs更新合流布局时,如果没有水印信息, 即不对水印进行任何修改,因此不能删除所有已添加的水印。
例如,视频中已有 1 个图片水印和 1 个文字水印。如想删除图片水印,可以将 wm_num 改为 1,传入原文字水印的设置,再调用 updateWatermarkConfigs 更新水印设置。
设置水印
本地服务端录制 SDK 支持以下水印相关设置:
参数 | 说明 |
---|---|
wm_num | 设置水印的总个数。 最多可设 15 个水印,其中文字水印最多 10 个,时间戳水印最多 1 个,图片水印最多 4 个。 |
wm_configs | 水印具体设置, 由多个 WatermarkConfig 组成的数组。一个 WatermarkConfig 对应一个水印。 WatermarkConfig 的个数需与 wm_num 参数中设置的水印个数保持一致。 |
WatermarkConfig |
|
文字水印
添加文字水印时,需要设置以下参数:
参数 | 说明 | |
---|---|---|
type | 水印类型,应设置为 kNERtcWatermarkTypeLitera。 | |
config | wm_litera | 指定文字水印内容。 文字水印不支持自动换行。如果需要在文字水印中换行显示,可以在合适位置插入换行符 \n进行换行。 |
font_size | 指定字号。 | |
font_file_path | 指定字体文件路径。支持 ttf,otf 等字体格式。 若未设置,则使用默认字体 NotoSansMonoCJKsc-Regular。 |
|
offset_x | 设置水印的水平位置。 | |
offset_y | 设置水印的垂直位置。 |
- 最多可添加 10 个文字水印。
- 仅支持 UTF-8 编码。
- 支持的字符取决于字体类型。默认字体为 NotoSansMonoCJKsc-Regular,支持的语言和字符详见字体介绍。
时间戳水印
添加时间戳水印时,需要设置以下参数:
参数 | 说明 | |
---|---|---|
type | 水印类型,应设置为 kNERtcWatermarkTypeTimestamp。 | |
config | config | 指定时间戳的字号。 |
offset_x | 设置水印的水平位置。 | |
offset_y | 设置水印的垂直位置。 |
- 只能添加 1 个时间戳水印。
- 时间戳显示录制服务器的当前时间,当前时间是动态变化的,显示格式为 “2021-01-25 17:31:21"。
图片水印
添加图片水印时,需要设置以下参数:
参数 | 说明 | |
---|---|---|
type | 水印类型,应设置为 kNERtcWatermarkTypeImage。 | |
config | image_path | 指定图片路径。 |
offset_x | 设置水印的水平位置。 | |
offset_y | 设置水印的垂直位置。 | |
wm_width | 设置水印的宽度。 | |
wm_height | 设置水印的高度。 |
- 最多可添加 4 个图片水印。
- 仅支持 Linux 服务器本地的 PNG 图片。
- 图片分辨率建议设置为 480p 以内。
设置水印背景区域
添加文字和时间戳水印时,可以通过 config 中的 background 参数设置水印背景区域的相关参数,水印背景区域默认为包含所有文字或时间戳的最小矩形,背景区域位置与水印坐标相关,您可以通过以下参数设置水印区域的相关参数:
参数 | 说明 |
---|---|
border | 设置水印背景区域的边框宽度,从而设置整个水印框的大小和范围。 |
color | 设置水印背景区域的颜色。 |
alpha | 设置水印背景区域的透明度。范围为[0, 1],0 表示完全透明,1表示完全不透明。 |
示例代码
以下 C++ 示例代码演示了如何调用 setVideoMixingLayout 设置 3 个水印:1 个图片水印,1 个时间戳水印,1 个文字水印。
nerecord::IRecordEngine *engine = (nerecord::IRecordEngine *)createNERecordEngine();
nerecord::NERecordEngineContext ctx;
ctx.auto_subscribe_audio = true;
ctx.auto_subscribe_video = true;
ctx.audio_enable = true;
ctx.video_enable = true;
ctx.default_stream_type = nerecord::kNERtcRemoteVideoStreamTypeHigh;
ctx.mixed_audio_video = false;
ctx.mixing_enable = true;
ctx.decodeAudio = nerecord::kNERtcAudioFormatAAC;
ctx.decodeVideo = nerecord::kNERtcVideoFormatH264;
ctx.video_record_resolution.vanvasWidth = 640;
ctx.video_record_resolution.vanvasHeight = 480;
ctx.video_record_resolution.bps = 400000;
ctx.video_record_resolution.fps = 15;
ctx.snapshot_interval = 10;
ctx.audioProfile = nerecord::kNERtcAudioProfileHight;
engine->initialize(ctx);
engine->joinChannel(<token>, <channel_name>, <uid>);
nerecord::VideoMixingLayout layout;
nerecord::WatermarkConfig wms[3];
wms[0].type = kNERtcWatermarkTypeImage;
wms[0].config.image.image_path = "absolute_path_of_image";
wms[0].config.image.offset_x = <x0>;
wms[0].config.image.offset_y = <y0>;
wms[0].config.image.wm_width = <w0>;
wms[0].config.image.wm_height = <h0>;
wms[1].type = kNERtcWatermarkTypeTimestamp;
wms[1].config.timestamp.font_file_path = NULL;
wms[1].config.timestamp.font_size = 20;
wms[1].config.timestamp.offset_x = <x1>;
wms[1].config.timestamp.offset_y = <y2>;
wms[1].config.timestamp.background.color = "white";
wms[1].config.timestamp.background.alpha = 0.3;
wms[1].config.timestamp.background.border = 5;
wms[2].type = kNERtcWatermarkTypeLitera;
wms[2].config.litera.wm_litera = "text";
wms[2].config.litera.font_file_path = NULL;
wms[2].config.litera.font_size = 20;
wms[2].config.litera.offset_x = <x2>;
wms[2].config.litera.offset_y = <y2>;
wms[2].config.litera.background.color = "white";
wms[2].config.litera.background.alpha = 0.3;
wms[2].config.litera.background.border = 5;
layout.wmNum = 3;
layout.wmConfigs = wms;
layout.layout = kNERtcLayoutGrid;
layout.backgroundColor = "#ffffff";
engine->setVideoMixingLayout(layout);
engine->startService();
/*录制中*/
engine->stopService();
engine->leaveChannel();
engine->release();
destroyNERecordEngine((void *&)engine);
此文档是否对你有帮助?