水印处理
SDK 从 5.2.5 版本开始支持该功能。
融云支持在直播中在视频流上添加水印。添加水印有两种控制方式,本文仅介绍方案一:
- 方案一:使用客户端 SDK 提供的
setWatermark方法添加图片水印。客户端发布的视频流即带有图片水印,因此订阅分流或合流的直播观众均会看到带水印的视频流。 - 方案二:使用服务端 API 的
/rtc/mcu/config接口,在服务端处理,添加时间戳水印、文字水印或图片水印。这种方式支持为单人视频流或合流视频添加水印,但只有订阅合流的观众可看到带水印的视频流。本文不介绍服务端的处理方案,如有需要,请参见服务端文档直播合流。
提示
方案一适用于实现 App 客户端用户自主添加个 性化水印;方案二更适用于由 App 添加统一风格的水印。 客户端与服务端添加的水印相互独立。如果同时使用,则订阅合流的观众可能会看到水印叠加。
设置水印事件回调监听
设置水印设置事件回调
方法
Dart
RCRTCEngine.onWatermarkSet
返回值
| 参数 | 描述 |
|---|---|
code | 接口结果码 |
message | 失败原因 |
示例代码
Dart
engine.onWatermarkSet = (int code, String? message) {
if (code == 0) {
// 水印设置成功
print('水印设置成功');
} else {
// 水印设置失败
print('水印设置失败: $message');
}
};
设置水印清除事件回调
方法
Dart
RCRTCEngine.onWatermarkRemoved
返回值
| 参数 | 描述 |
|---|---|
code | 接口结果码 |
message | 失败原因 |
示例代码
Dart
engine.onWatermarkRemoved = (int code, String? message) {
if (code == 0) {
// 水印清除成功
print('水印清除成功');
} else {
// 水印清除失败
print('水印清除失败: $message');
}
};
设置水印
RCRTCEngine 内置了设置水印的接口,通过调用 setWatermark(String imagePath, Point<double> position, double zoom) 方法即可实现为相机、自定义文件、共享桌面采集到的视频流添加水印的功能。每一道视频流水印设置是独立的。
方法
Dart
RCRTCEngine.setWatermark();
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
imagePath | String | 是 | 水印图片的本地路径 |
position | Point | 是 | 水印的位置,取值范围 0 ~ 1 |
zoom | double | 是 | 水印的缩放比,取值范围 0 < zoom ≤ 1 |