setWatermark method Null safety

Future<void> setWatermark(
  1. String assetUrl,
  2. int streamType,
  3. double x,
  4. double y,
  5. double width
)

添加水印

水印的位置是通过 x, y, width 来指定的

  • x:水印的坐标,取值范围为0 - 1的浮点数。
  • y:水印的坐标,取值范围为0 - 1的浮点数。
  • width:水印的宽度,取值范围为0 - 1的浮点数。

举例:如果当前编码分辨率是540 × 960,(x, y, width) 设置为(0.1, 0.1, 0.2) 那么:水印的左上坐标点就是 (540 × 0.1, 960 × 0.1),也就是 (54, 96),水印的宽度是 540 × 0.2 = 108px,高度自动计算。

参数:

assetUrl可以为flutter中定义的asset资源地址如'images/watermark_img.png',也可以为网络图片地址

streamType 如果要给屏幕分享的一路也设置水印,需要调用两次的 setWatermark,请参考 TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG

x 归一化水印位置的 X 轴坐标,取值0,1

y 归一化水印位置的 Y 轴坐标,取值0,1

width 归一化水印宽度,取值0,1

Implementation

Future<void> setWatermark(
    String assetUrl, //assets 中的资源地址
    int streamType,
    double x,
    double y,
    double width) async {
  String imageUrl = assetUrl;
  String type = 'network'; //默认为网络图片
  if (assetUrl.indexOf('http') != 0) {
    type = 'local';
  }
  return _channel.invokeMethod('setWatermark', {
    "type": type,
    "imageUrl": imageUrl,
    "streamType": streamType,
    "x": x.toString(),
    "y": y.toString(),
    "width": width.toString()
  });
}