水印处理
融云支持在视频流上添加水印。添加水印有两种控制方式,本文仅介绍方案一:
- 方案一:使用客户端 SDK 提供的
setWaterMark:position:
方法添加图片水印。客户端发布的视频流即带有图片水印,因此订阅分流或合流的直播观众均会看到带水印的视频流。 - 方案二:使用服务端 API 的
/rtc/mcu/config
接口,在服务端处理,添加时间戳水印、文字水印或图片水印。这种方式支持为单人视频流或合流视频添加水印,但只有订阅合流的观众可看到带水印的视频流。本文不介绍服务端的处理方案,如有需要,请参见服务端文档直播合流。
方案一适用于实现 App 客户端用户自主添加个性化水印;方案二更适用于由 App 添加统一风格的水印。
客户端与服务端添加的水印相互独立。如果同时使用,则订阅合 流的观众可能会看到水印叠加。
设置水印
提示
SDK 从 5.1.16 版本开始,提供内置水印接口。
RongCloudRTC
内置了设置水印的接口,通过调用 RCRTCVideoOutputStream
的 setWaterMark:position:
方法即可实现为相机/自定义文件/共享桌面采集到的视频流添加水印的功能。每一道视频流水印设置是独立的。
- (BOOL)setWaterMark:(nullable UIImage *)image position:(CGRect)position;
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
image | UIImage | 否 | 水印图片,传入 nil 时则清除水印。 |
position | CGRect | 是 | 水印的位置和尺寸参数。 注意:参数取值范围 0 ~ 1,SDK 内部会根据视频分辨率计算水印实际的像素位置和尺寸。 |
示例代码
// 添加水印
// x, y, width 参数取值范围是 0 ~ 1
// 不用设置 height,内部会根据水印图片的宽高比自动计算一个合适的高度。
UIImage *waterMarkImage = [UIImage imageNamed:@"chat_water_mark"];
[[RCRTCEngine sharedInstance].defaultVideoStream setWaterMark:waterMarkImage
position:CGRectMake(0.1, 0.1, 0.14, 0)];
// 清除水印
[[RCRTCEngine sharedInstance].defaultVideoStream setWaterMark:nil
position:CGRectZero];