在这些场景下,你可能需要对本地渲染和(或)发布到远端的视频画面进行水平翻转,使其呈现镜像效果。
行业 | 场景 |
|---|---|
在线课堂 | 课堂直播真实还原线下课堂,例如:卡片跟读,游戏互动,音乐、舞蹈教学 |
互动娱乐 | 直播间内主播与其他主播或观众实时互动时,收到有关方位的指令 |
视频通话 | 会议通话时,参会者需要与主讲人的讲解方位保持一致 |
远程医疗 | 进行远程问诊、在线咨询时,针对正确部位进行看诊(例:左眼) |
本文介绍如何使用 RTC SDK 的镜像接口,实现不同的镜像需求。
你已经集成了 3.29 及以上版本的 RTC SDK,并实现音视频通话功能。
支持镜像功能的 SDK 详见API 参考。
MIRROR_TYPE_RENDER_AND_ENCODER(3))和无镜像(MIRROR_TYPE_NONE(0))选项有效,编码传输镜像选项 (MIRROR_TYPE_RENDER(1)) 无效。rtcVideo.setLocalVideoMirrorType(MirrorType.MIRROR_TYPE_NONE);
在调用镜像接口设置镜像类型之前,不同视频源的镜像设置具有不同的初始值,如下表
前置摄像头/ PC 摄像头 | 后置摄像头 | 视频外部源 | |
|---|---|---|---|
移动端 | 本地渲染:镜像 | 本地渲染:原始 | 本地渲染:原始 |
PC 端 | 本地渲染:镜像 | 不适用 | 本地渲染:原始 |
SDK 支持四种镜像模式,分别为
假设现实中看到的人和物如下图:
设置不同的镜像模式后,本地用户预览效果和远端用户看到的效果如下表。
镜像模式 | 本地用户预览效果 | 远端用户看到的效果 |
|---|---|---|
开启本地渲染镜像 |
|
|
开启编码镜像 |
|
|
开启本地渲染镜像和编码镜像 |
|
|
关闭镜像 |
|
|
在实际应用中,可能还需要对视频进行其他前处理,例如添加动态贴纸、虚拟背景等。
假设现实中看到的人和物如左图,前处理中添加的贴纸如右图。
|
|
|---|---|
现实中看到的人和物 | 在 RTC 中添加的笑脸贴纸 |
在添加贴纸的场景中设置不同的镜像模式后,本地用户预览效果和远端用户看到的效果如下表。
镜像模式 | 本地用户预览效果 | 远端用户看到的效果 | 本地和远端看到的图像是否一致 |
|---|---|---|---|
开启本地渲染镜像 | 镜像 | 原始 | 否 |
开启编码镜像 | 镜像 | 镜像 | 否 |
开启本地渲染镜像和编码镜像 | 镜像 | 镜像 | 是 |
关闭镜像 | 原始 | 原始 | 是 |
下图分别展示了,在不同镜像模式下,对视频流进行镜像处理和其他前处理的过程



说明:表格中的 macOS API 接口为 Objective-C,而示例项目中的 macOS 项目使用的是 Windows SDK 中的 API 接口。
平台 | Android | iOS | macOS | Windows | Electron | Unity | Flutter | Web |
|---|---|---|---|---|---|---|---|---|
版本 | 3.29 及以后版本 | 3.29 及以后版本 | 3.44 及以后版本 | 3.29 及以后版本 | 自首个对外版本 | 自首个对外版本 | 自首个对外版本 | 3.22.x 及以后版本 |
设置镜像模式 |
| |||||||
切换摄像头 | 无 | 无 | 无 |
|