# 直播水印 (/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-prenpro/watermark)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_watermark"></a>

<a id="api_irtcengine_addvideowatermark1"></a>

<a id="ariaid-title2"></a>

## addVideoWatermark [1/3] [#addvideowatermark-13]

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

<a id="api_irtcengine_addvideowatermark1__prototype"></a>

```cpp
virtual int addVideoWatermark(const RtcImage& watermark) __deprecated = 0;
```

<a id="api_irtcengine_addvideowatermark1__detailed_desc"></a>

<a id="废弃"></a>

:::error[废弃]
该方法已废弃。
:::

添加水印图像后，频道内的所有用户（包括 CDN 观众）以及视频采集设备都可以看到并采集该图像。如果你只想在 CDN 推流中添加水印，请参见 [startRtmpStreamWithTranscoding](/zh-CN/api-reference/rtc/cpp-all-platforms/cloud-media-relay/media-push#api_irtcengine_startrtmpstreamwithtranscoding)。

:::note
注：

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

<a id="api_irtcengine_addvideowatermark1__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="watermark"></a>
<Parameter name="watermark">

水印图像。详见 [RtcImage](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcimage)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_addvideowatermark1__return_values"></a>

### 返回值 [#返回值]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类]

- [IRtcEngine](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_addvideowatermark2"></a>

<a id="ariaid-title3"></a>

## addVideoWatermark [2/3] [#addvideowatermark-23]

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

<a id="api_irtcengine_addvideowatermark2__prototype"></a>

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

<a id="api_irtcengine_addvideowatermark2__detailed_desc"></a>

<a id="废弃-1"></a>

:::error[废弃]
自 v4.5.0 版本废弃，请改用 [addVideoWatermark [3/3]](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-prenpro/watermark#api_irtcengine_addvideowatermark3)。
:::

该方法在直播中向本地视频添加 PNG 格式的水印图像。添加后，频道中的所有观众（包括 CDN 观众）以及采集设备都可以看到并采集该图像。声网 SDK 每次仅支持添加一张水印图像，新添加的图像会替换之前的图像。
水印图像的坐标依赖于 [setVideoEncoderConfiguration](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-basic#api_irtcengine_setvideoencoderconfiguration) 方法中的设置：

- 如果编码视频的方向模式（[ORIENTATION_MODE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-orientationmode)）为固定横屏模式或自适应横屏模式，水印图像将采用横屏方向。
- 如果编码视频的方向模式为固定竖屏模式或自适应竖屏模式，水印图像将采用竖屏方向。
- 设置水印位置时，区域必须小于 [setVideoEncoderConfiguration](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-basic#api_irtcengine_setvideoencoderconfiguration) 中设置的视频尺寸，否则水印图像将被裁剪。

你可以通过设置 `visibleInPreview` 参数控制预览时水印是否可见。但其最终是否生效还取决于调用 [setupLocalVideo](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-rendering#api_irtcengine_setuplocalvideo) 时设置的视频帧位置（`position`）：

- 观察位置 `VIDEO_MODULE_POSITION_POST_CAPTURER`（默认）：`visiblePreview` 为 true，则水印可见；`visiblePreview` 为 false，则水印不可见。
- 观察位置 `VIDEO_MODULE_POSITION_PRE_ENCODER`：`visiblePreview` 为 true，则水印可见；`visiblePreview` 为 false，则水印仍可见。

:::note
注：

- 请确保在调用该方法前已调用 [enableVideo](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-basic#api_irtcengine_enablevideo)。
- 如果你只想为媒体推流添加水印，可以调用该方法或 [startRtmpStreamWithTranscoding](/zh-CN/api-reference/rtc/cpp-all-platforms/cloud-media-relay/media-push#api_irtcengine_startrtmpstreamwithtranscoding) 方法。
- 该方法仅支持添加 PNG 格式的水印图像。支持的 PNG 图像像素格式包括 RGBA、RGB、Palette、Gray 和 Alpha_gray。
- 如果 PNG 图像的尺寸与该方法中的设置不一致，图像将被裁剪或缩放以符合设置。
- 如果你为本地视频启用了镜像模式，本地视频中的水印也会被镜像。为避免水印被镜像，声网建议不要同时使用本地视频的镜像和水印功能。你可以在应用层实现水印功能。
:::

<a id="api_irtcengine_addvideowatermark2__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="watermarkurl"></a>
<Parameter name="watermarkUrl">

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

</Parameter>
<a id="options"></a>
<Parameter name="options">

水印图像的选项。详见 [WatermarkOptions](/zh-CN/api-reference/rtc/cpp-all-platforms/class-watermarkoptions)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_addvideowatermark2__return_values"></a>

### 返回值 [#返回值-1]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-1]

- [IRtcEngine](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_addvideowatermark3"></a>

<a id="ariaid-title4"></a>

## addVideoWatermark [3/3] [#addvideowatermark-33]

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

<a id="api_irtcengine_addvideowatermark3__prototype"></a>

```cpp
virtual int addVideoWatermark(const WatermarkConfig& configs) = 0;
```

<a id="api_irtcengine_addvideowatermark3__detailed_desc"></a>

:::info[自从]
自 v4.6.0 版本新增。
:::

你可以使用该方法在本地视频流中叠加水印图像，并通过 [WatermarkConfig](/zh-CN/api-reference/rtc/cpp-all-platforms/class-watermarkconfig) 设置水印在预览画面中的位置、大小和可见性。

<a id="api_irtcengine_addvideowatermark3__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="configs"></a>
<Parameter name="configs">

水印配置。详见 [WatermarkConfig](/zh-CN/api-reference/rtc/cpp-all-platforms/class-watermarkconfig)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_addvideowatermark3__return_values"></a>

### 返回值 [#返回值-2]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-2]

- [IRtcEngine](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_addvideowatermarkex"></a>

<a id="ariaid-title5"></a>

## addVideoWatermarkEx [1/2] [#addvideowatermarkex-12]

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

<a id="api_irtcengineex_addvideowatermarkex__prototype"></a>

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

<a id="api_irtcengineex_addvideowatermarkex__detailed_desc"></a>

<a id="废弃-2"></a>

:::error[废弃]
自 v4.6.0 版本废弃，请改用 `addVideoWatermarkEx(const WatermarkConfig& config, const RtcConnection& connection)`。
:::

该方法在直播中向本地视频添加 PNG 格式的水印图像。添加后，频道中的所有观众（包括 CDN 观众）和采集设备都可以看到并采集该图像。声网 SDK 每个直播视频流仅支持添加一张水印图像，新添加的图像会替换之前的图像。
水印图像的位置依赖于 [setVideoEncoderConfigurationEx](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-basic#api_irtcengineex_setvideoencoderconfigurationex) 方法中的设置：

- 如果编码视频的方向模式（[ORIENTATION_MODE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-orientationmode)）为固定横屏或自适应横屏，水印将按横屏方向显示。
- 如果方向模式为固定竖屏或自适应竖屏，水印将按竖屏方向显示。
- 设置水印位置时，区域必须小于 [setVideoEncoderConfigurationEx](/zh-CN/api-reference/rtc/cpp-all-platforms/video/video-basic#api_irtcengineex_setvideoencoderconfigurationex) 中设置的视频尺寸，否则水印图像会被裁剪。

:::note
注：

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

<a id="api_irtcengineex_addvideowatermarkex__scenario"></a>

### 适用场景 [#适用场景]

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

<a id="api_irtcengineex_addvideowatermarkex__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="watermarkurl-1"></a>
<Parameter name="watermarkUrl">

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

</Parameter>
<a id="options-1"></a>
<Parameter name="options">

水印图像的相关设置，详见 [WatermarkOptions](/zh-CN/api-reference/rtc/cpp-all-platforms/class-watermarkoptions)。

</Parameter>
<a id="connection"></a>
<Parameter name="connection">

连接信息，详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_addvideowatermarkex__return_values"></a>

### 返回值 [#返回值-3]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-3]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengineex_addvideowatermarkex1"></a>

<a id="ariaid-title6"></a>

## addVideoWatermarkEx [2/2] [#addvideowatermarkex-22]

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

<a id="api_irtcengineex_addvideowatermarkex1__prototype"></a>

```cpp
virtual int addVideoWatermarkEx(const WatermarkConfig& config, const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_addvideowatermarkex1__detailed_desc"></a>

:::info[自从]
自 v4.6.0 版本新增。
:::

<a id="api_irtcengineex_addvideowatermarkex1__scenario"></a>

### 适用场景 [#适用场景-1]

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

<a id="api_irtcengineex_addvideowatermarkex1__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="config"></a>
<Parameter name="config">

水印配置，详见 [WatermarkConfig](/zh-CN/api-reference/rtc/cpp-all-platforms/class-watermarkconfig)。

</Parameter>
<a id="connection-1"></a>
<Parameter name="connection">

[RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection) 对象，详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_addvideowatermarkex1__return_values"></a>

### 返回值 [#返回值-4]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-4]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengineex_clearvideowatermarkex"></a>

<a id="ariaid-title7"></a>

## clearVideoWatermarkEx [#clearvideowatermarkex]

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

<a id="api_irtcengineex_clearvideowatermarkex__prototype"></a>

```cpp
virtual int clearVideoWatermarkEx(const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_clearvideowatermarkex__detailed_desc"></a>

<a id="api_irtcengineex_clearvideowatermarkex__scenario"></a>

### 适用场景 [#适用场景-2]

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

<a id="api_irtcengineex_clearvideowatermarkex__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="connection-2"></a>
<Parameter name="connection">

连接信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_clearvideowatermarkex__return_values"></a>

### 返回值 [#返回值-5]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-5]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_clearvideowatermarks"></a>

<a id="ariaid-title8"></a>

## clearVideoWatermarks [#clearvideowatermarks]

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

<a id="api_irtcengine_clearvideowatermarks__prototype"></a>

```cpp
virtual int clearVideoWatermarks() = 0;
```

<a id="api_irtcengine_clearvideowatermarks__detailed_desc"></a>

<a id="api_irtcengine_clearvideowatermarks__return_values"></a>

### 返回值 [#返回值-6]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-6]

- [IRtcEngine](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_removevideowatermark"></a>

<a id="ariaid-title9"></a>

## removeVideoWatermark [#removevideowatermark]

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

<a id="api_irtcengine_removevideowatermark__prototype"></a>

```cpp
virtual int removeVideoWatermark(const char* id) = 0;
```

<a id="api_irtcengine_removevideowatermark__detailed_desc"></a>

:::info[自从]
自 v4.6.0 版本新增。
:::

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

<a id="api_irtcengine_removevideowatermark__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="id"></a>
<Parameter name="id">

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

</Parameter>
</ParameterList>

<a id="api_irtcengine_removevideowatermark__return_values"></a>

### 返回值 [#返回值-7]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-7]

- [IRtcEngine](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_removevideowatermarkex"></a>

<a id="ariaid-title10"></a>

## removeVideoWatermarkEx [#removevideowatermarkex]

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

<a id="api_irtcengineex_removevideowatermarkex__prototype"></a>

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

<a id="api_irtcengineex_removevideowatermarkex__detailed_desc"></a>

:::info[自从]
自 v4.6.0 版本新增。
:::

<a id="api_irtcengineex_removevideowatermarkex__scenario"></a>

### 适用场景 [#适用场景-3]

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

<a id="api_irtcengineex_removevideowatermarkex__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="id-1"></a>
<Parameter name="id">

水印 ID。

</Parameter>
<a id="connection-3"></a>
<Parameter name="connection">

连接信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_removevideowatermarkex__return_values"></a>

### 返回值 [#返回值-8]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-8]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)
