直播水印
addVideoWatermark [1/3]
添加本地视频水印。
public abstract int addVideoWatermark(AgoraImage watermark);
详情
该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的用户,旁路推流观众,甚至采集设备都能看到或采集到该水印图片。如果你仅仅希望在旁路直播推流中添加水印,请参考 startRtmpStreamWithTranscoding 中描述的用法。
- 在本地直播和旁路推流中,URL 的定义不同。本地直播中,URL 指本地直播视频上图片的本地绝对/相对路径;旁路推流中,URL 指旁路推流视频上图片的地址。
- 待添加图片的源文件格式必须是 PNG。如果待添加的 PNG 图片的尺寸与你该方法中设置的尺寸不一致,SDK 会对 PNG 图片进行裁剪,以与设置相符。
- 声网当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
参数
- watermark
- 待添加在本地直播推流中的水印图片:AgoraImage。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
addVideoWatermark [2/3]
添加本地视频水印。
public abstract int addVideoWatermark(String watermarkUrl, WatermarkOptions options);
详情
该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的用户、旁路直播观众和采集设备都能看到或采集到该水印图片。当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
- 如果视频编码方向(ORIENTATION_MODE)固定为横屏或自适应模式下的横屏,那么水印使用横屏坐标。
- 如果视频编码方向(ORIENTATION_MODE)固定为竖屏或自适应模式下的竖屏,那么水印使用竖屏坐标。
- 设置水印坐标时,水印的图像区域不能超出 setVideoEncoderConfiguration 方法中设置的视频尺寸,否则超出部分将被裁剪。
- 你需要在调用 enableVideo 方法之后再调用该方法。
- 如果你只是在旁路推流时添加水印,你可以使用该方法或 startRtmpStreamWithTranscoding 方法设置水印。
- 待添加水印图片必须是 PNG 格式。该方法支持所有像素格式的 PNG 图片:RGBA、RGB、Palette、Gray 和 Alpha_gray。
- 如果待添加的 PNG 图片的尺寸与你在该方法中设置的尺寸不一致,SDK 会对 PNG 图片进行缩放或裁剪,以与设置相符。
- 如果你已设置本地视频为镜像模式,那么此处的本地水印也为镜像。为避免本地用户看本地视频时的水印也被镜像,建议你不要对本地视频同时使用镜像和水印功能,请在应用层实现本地水印功能。
visibleInPreview
参数设置水印在预览时是否可见,但能否最终能够生效也取决于你在调用 setupLocalVideo 时设置的 position 参数(视频帧在视频链路中的位置),详见下表。 视频观测位置 | visibleInPreview 取值 | 水印是否可见 |
---|---|---|
(默认) VIDEO_MODULE_POSITION_POST_CAPTURER | true | 是 |
false | 否 | |
VIDEO_MODULE_POSITION_PRE_ENCODER | true | 是 |
false | 是 |
参数
- watermarkUrl
- 待添加的水印图片的本地路径。该方法支持从本地绝对/相对路径添加水印图片。
- options
- 待添加的水印图片的设置选项,详见 WatermarkOptions。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
addVideoWatermark [3/3]
向本地视频添加水印图像。
public abstract int addVideoWatermark(WatermarkConfig config);
你可以使用该方法在本地视频流中叠加水印图像,并通过 WatermarkConfig 配置水印的位置、大小和在预览中的可见性。
调用限制
无。
参数
- config
- 水印配置。详见 WatermarkConfig。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
addVideoWatermarkEx [1/2]
添加本地视频水印。
public abstract int addVideoWatermarkEx(
String watermarkUrl, WatermarkOptions options, RtcConnection connection);
详情
该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的用户、旁路直播观众和采集设备都能看到或采集到该水印图片。当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
- 如果视频编码方向(ORIENTATION_MODE)固定为横屏或自适应模式下的横屏,那么水印使用横屏坐标。
- 如果视频编码方向(ORIENTATION_MODE)固定为竖屏或自适应模式下的竖屏,那么水印使用竖屏坐标。
- 设置水印坐标时,水印的图像区域不能超出 setVideoEncoderConfigurationEx 方法中设置的视频尺寸,否则超出部分将被裁剪。
- 你需要在调用 enableVideo 方法之后再调用本方法。
- 待添加水印图片必须是 PNG 格式。本方法支持所有像素格式的 PNG 图片:RGBA、RGB、Palette、Gray 和 Alpha_gray。
- 如果待添加的 PNG 图片的尺寸与你在本方法中设置的尺寸不一致,SDK 会对 PNG 图片进行缩放或裁剪,以与设置相符。
- 如果你已经使用 startPreview [2/2] 方法开启本地视频预览,那么本方法的
visibleInPreview
可设置水印在预览时是否可见。 - 如果你已设置本地视频为镜像模式,那么此处的本地水印也为镜像。为避免本地用户看本地视频时的水印也被镜像,建议你不要对本地视频同时使用镜像和水印功能,请在应用层实现本地水印功能。
参数
- watermarkUrl
- 待添加的水印图片的本地路径。该方法支持从本地绝对/相对路径添加水印图片。
- options
- 待添加的水印图片的设置选项,详见 WatermarkOptions。
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
addVideoWatermarkEx [2/2]
向本地视频添加水印图像。
public abstract int addVideoWatermarkEx(WatermarkConfig config, RtcConnection connection);
适用场景
该方法适用于多频道场景。
调用限制
无。
参数
- config
- 水印配置。详见 WatermarkConfig。
- connection
- 用于控制不同连接实例。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
clearVideoWatermarkEx
删除已添加的视频水印。
public abstract int clearVideoWatermarkEx(RtcConnection connection);
参数
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
clearVideoWatermarks
getBuffer
获取水印图像的缓冲区。
public ByteBuffer getBuffer()
该方法用于获取水印图像的缓冲区或水印图像数据缓冲区。
调用限制
无。
返回值
方法调用成功时,返回包含水印图像数据的 ByteBuffer
对象。
getFormat
获取水印图像的格式。
public int getFormat()
用于获取水印图像的格式。
调用限制
无。
返回值
方法调用成功,返回水印图像缓冲区的格式。
所属接口类getHeight
获取水印图像的高度。
public int getHeight()
用于获取水印图像的高度。
调用限制
无。
返回值
方法调用成功,返回水印图像的高度,单位为像素。
所属接口类getId
获取水印的唯一 ID。
public String getId()
用于从 WatermarkBuffer 或 WatermarkConfig 实例中获取水印的唯一标识符。
调用限制
无。
返回值
方法调用成功时,返回水印的唯一 ID。方法调用失败时,返回空字符串。
所属接口类getImageUrl
获取水印图像的 URL。
public String getImageUrl()
调用限制
无。
返回值
方法调用成功时,返回水印图像的 URL。方法调用失败时,返回空字符串。
所属接口类getPositionInLandscapeMode
获取横屏模式下水印的位置。
public int[] getPositionInLandscapeMode()
获取横屏模式下水印的位置。
调用限制
无。
返回值
方法调用成功,返回一个包含四个元素的整数数组,表示水印矩形的 x、y、宽度和高度。
所属接口类getPositionInPortraitMode
获取竖屏模式下水印的位置。
public int[] getPositionInPortraitMode()
获取竖屏模式下水印的位置。
调用限制
无。
返回值
方法调用成功,返回一个包含四个元素的整数数组,表示水印矩形的 x、y、宽度和高度。
所属接口类getType
获取水印的类型。
public int getType()
用于获取当前水印配置中的类型信息。
调用限制
无。
返回值
WATERMARK_TYPE_IMAGE
:图片类型水印。WATERMARK_TYPE_BUFFER
:缓冲区类型水印。
getWidth
获取水印图像的宽度。
public int getWidth()
用于获取水印图像的宽度。
调用限制
无。
返回值
方法调用成功,返回水印图像的宽度,单位为像素。
所属接口类getzOrder
获取水印图像的 Z 轴顺序索引。
public int getzOrder()
用于获取水印图像在 Z 轴上的绘制顺序索引。
调用限制
无。
返回值
方法调用成功,返回水印图像的 Z 轴顺序索引。
所属接口类isVisibleInPreview
检查水印在本地视频预览中是否可见。
public boolean isVisibleInPreview()
检查水印在本地视频预览中是否可见。
调用限制
无。
返回值
true
:水印在本地视频预览中可见。false
:水印在本地视频预览中不可见。
removeVideoWatermark
removeVideoWatermarkEx
从本地或远端视频流中移除指定的水印图像。
public abstract int removeVideoWatermarkEx(String id, RtcConnection connection);
适用场景
该方法适用于多频道场景。
调用限制
无。
参数
- id
- 要移除的水印图像的 ID。
- connection
- 用于控制不同连接实例的参数。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。