直播水印

  • C++

更新时间不可用

addVideoWatermark [1/3]

向本地视频流添加 PNG 格式的水印图像。

C++
virtual int addVideoWatermark(const RtcImage& watermark) __deprecated = 0;

废弃

该方法已废弃。

添加水印图像后,频道内的所有用户(包括 CDN 观众)以及视频采集设备都可以看到并采集该图像。如果你只想在 CDN 推流中添加水印,请参见 startRtmpStreamWithTranscoding。

注:

  • 本地视频和 CDN 推流中 URL 的含义不同:在本地视频流中,URL 指的是添加的水印图像文件在本地视频流中的绝对路径;在 CDN 推流中,URL 指的是添加的水印图像在 CDN 推流中的 URL 地址。
  • 水印图像的源文件必须为 PNG 格式。如果 PNG 文件的宽高与该方法中的设置不一致,SDK 会裁剪该文件以符合设置。
  • 声网 SDK 仅支持在本地视频或 CDN 推流中添加一张水印图像。新添加的水印图像会替换之前的图像。

参数

参数名描述
watermark

水印图像。详见 RtcImage。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

addVideoWatermark [2/3]

向本地视频添加 PNG 格式的水印图像。

C++
virtual int addVideoWatermark(const char* watermarkUrl, const WatermarkOptions& options) = 0;

废弃

自 v4.5.0 版本废弃,请改用 addVideoWatermark [3/3]。

该方法在直播中向本地视频添加 PNG 格式的水印图像。添加后,频道中的所有观众(包括 CDN 观众)以及采集设备都可以看到并采集该图像。声网 SDK 每次仅支持添加一张水印图像,新添加的图像会替换之前的图像。 水印图像的坐标依赖于 setVideoEncoderConfiguration 方法中的设置:

  • 如果编码视频的方向模式(ORIENTATION_MODE)为固定横屏模式或自适应横屏模式,水印图像将采用横屏方向。
  • 如果编码视频的方向模式为固定竖屏模式或自适应竖屏模式,水印图像将采用竖屏方向。
  • 设置水印位置时,区域必须小于 setVideoEncoderConfiguration 中设置的视频尺寸,否则水印图像将被裁剪。

你可以通过设置 visibleInPreview 参数控制预览时水印是否可见。但其最终是否生效还取决于调用 setupLocalVideo 时设置的视频帧位置(position):

  • 观察位置 VIDEO_MODULE_POSITION_POST_CAPTURER(默认):visiblePreview 为 true,则水印可见;visiblePreview 为 false,则水印不可见。
  • 观察位置 VIDEO_MODULE_POSITION_PRE_ENCODER:visiblePreview 为 true,则水印可见;visiblePreview 为 false,则水印仍可见。

注:

  • 请确保在调用该方法前已调用 enableVideo。
  • 如果你只想为媒体推流添加水印,可以调用该方法或 startRtmpStreamWithTranscoding 方法。
  • 该方法仅支持添加 PNG 格式的水印图像。支持的 PNG 图像像素格式包括 RGBA、RGB、Palette、Gray 和 Alpha_gray。
  • 如果 PNG 图像的尺寸与该方法中的设置不一致,图像将被裁剪或缩放以符合设置。
  • 如果你为本地视频启用了镜像模式,本地视频中的水印也会被镜像。为避免水印被镜像,声网建议不要同时使用本地视频的镜像和水印功能。你可以在应用层实现水印功能。

参数

参数名描述
watermarkUrl

要添加的水印图像的本地文件路径,支持使用本地绝对路径或相对路径。

options

水印图像的选项。详见 WatermarkOptions。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

addVideoWatermark [3/3]

向本地视频流添加水印图像。

C++
virtual int addVideoWatermark(const WatermarkConfig& configs) = 0;

自从

自 v4.6.0 版本新增。

你可以使用该方法在本地视频流中叠加水印图像,并通过 WatermarkConfig 设置水印在预览画面中的位置、大小和可见性。

参数

参数名描述
configs

水印配置。详见 WatermarkConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

addVideoWatermarkEx [1/2]

向本地视频添加水印图像。

C++
virtual int addVideoWatermarkEx(const char* watermarkUrl, const WatermarkOptions& options, const RtcConnection& connection) = 0;

废弃

自 v4.6.0 版本废弃,请改用 addVideoWatermarkEx(const WatermarkConfig& config, const RtcConnection& connection)。

该方法在直播中向本地视频添加 PNG 格式的水印图像。添加后,频道中的所有观众(包括 CDN 观众)和采集设备都可以看到并采集该图像。声网 SDK 每个直播视频流仅支持添加一张水印图像,新添加的图像会替换之前的图像。 水印图像的位置依赖于 setVideoEncoderConfigurationEx 方法中的设置:

  • 如果编码视频的方向模式(ORIENTATION_MODE)为固定横屏或自适应横屏,水印将按横屏方向显示。
  • 如果方向模式为固定竖屏或自适应竖屏,水印将按竖屏方向显示。
  • 设置水印位置时,区域必须小于 setVideoEncoderConfigurationEx 中设置的视频尺寸,否则水印图像会被裁剪。

注:

  • 请确保在调用该方法前已调用 enableVideo。
  • 该方法仅支持 PNG 格式的水印图像。支持的 PNG 像素格式包括 RGBA、RGB、Palette、Gray 和 Alpha_gray。
  • 如果 PNG 图像尺寸与该方法设置不一致,图像将被裁剪或缩放以适配设置。
  • 如果已调用 startPreview 启用本地视频预览,可通过 visibleInPreview 成员设置水印是否在预览中可见。
  • 如果启用了本地视频的镜像模式,水印也会被镜像。为避免水印被镜像,声网建议不要同时使用镜像和水印功能。你也可以在应用层实现水印功能。

适用场景

该方法适用于多频道场景。

参数

参数名描述
watermarkUrl

要添加的水印图像的本地文件路径,支持本地绝对路径或相对路径。

options

水印图像的相关设置,详见 WatermarkOptions。

connection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

addVideoWatermarkEx [2/2]

向本地视频添加水印图像。

C++
virtual int addVideoWatermarkEx(const WatermarkConfig& config, const RtcConnection& connection) = 0;

自从

自 v4.6.0 版本新增。

适用场景

该方法适用于多频道场景。

参数

参数名描述
config

水印配置,详见 WatermarkConfig。

connection

RtcConnection 对象,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

clearVideoWatermarkEx

移除视频流中的水印图像。

C++
virtual int clearVideoWatermarkEx(const RtcConnection& connection) = 0;

适用场景

该方法适用于多频道场景。

参数

参数名描述
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

clearVideoWatermarks

移除视频流中的水印图像。

C++
virtual int clearVideoWatermarks() = 0;

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

removeVideoWatermark

从本地视频中移除水印图像。

C++
virtual int removeVideoWatermark(const char* id) = 0;

自从

自 v4.6.0 版本新增。

该方法根据指定的唯一 ID,从本地视频流中移除之前添加的水印图像。

参数

参数名描述
id

要移除的水印的 ID。该值需与添加水印时使用的 ID 相同。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

removeVideoWatermarkEx

从本地或远端视频流中移除指定的水印图像。

C++
virtual int removeVideoWatermarkEx(const char* id, const RtcConnection& connection) = 0;

自从

自 v4.6.0 版本新增。

适用场景

该方法适用于多频道场景。

参数

参数名描述
id

水印 ID。

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类