You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
视频管理
镜像
复制全文
下载 pdf
镜像

适用场景

在这些场景下,你可能需要对本地渲染和(或)发布到远端的视频画面进行水平翻转,使其呈现镜像效果。

行业

场景

在线课堂

课堂直播真实还原线下课堂,例如:卡片跟读,游戏互动,音乐、舞蹈教学

互动娱乐

直播间内主播与其他主播或观众实时互动时,收到有关方位的指令

视频通话

会议通话时,参会者需要与主讲人的讲解方位保持一致

远程医疗

进行远程问诊、在线咨询时,针对正确部位进行看诊(例:左眼)

本文介绍如何使用 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 支持四种镜像模式,分别为

  • 开启本地渲染镜像
  • 开启编码镜像
  • 开启本地渲染镜像和编码镜像
  • 关闭镜像

镜像模式的效果

假设现实中看到的人和物如下图:
Image
设置不同的镜像模式后,本地用户预览效果和远端用户看到的效果如下表。

镜像模式

本地用户预览效果

远端用户看到的效果

开启本地渲染镜像

Image

Image

开启编码镜像

Image

Image

开启本地渲染镜像和编码镜像

Image

Image

关闭镜像

Image

Image

镜像模式下添加贴纸的效果

在实际应用中,可能还需要对视频进行其他前处理,例如添加动态贴纸、虚拟背景等。
假设现实中看到的人和物如左图,前处理中添加的贴纸如右图。

Image

Image

现实中看到的人和物

在 RTC 中添加的笑脸贴纸

在添加贴纸的场景中设置不同的镜像模式后,本地用户预览效果和远端用户看到的效果如下表。

镜像模式

本地用户预览效果

远端用户看到的效果

本地和远端看到的图像是否一致

开启本地渲染镜像

镜像Image
摄像头采集到的画面镜像
笑脸贴纸为镜像

原始Image

否

开启编码镜像

镜像Image
摄像头采集到的画面镜像
笑脸贴纸为镜像

镜像Image
摄像头采集到的画面镜像
笑脸贴纸为初始状态

否

开启本地渲染镜像和编码镜像

镜像Image
摄像头采集到的画面镜像
笑脸贴纸为初始状态

镜像Image
摄像头采集到的画面镜像
笑脸贴纸为初始状态

是

关闭镜像

原始Image

原始Image

是

数据流转图

下图分别展示了,在不同镜像模式下,对视频流进行镜像处理和其他前处理的过程

  • 开启本地渲染镜像
    Image
  • 开启本地渲染镜像和编码镜像
    Image
  • 开启编码镜像
    Image

注意事项

  • 在调用镜像接口设置镜像类型之前,调用 switchCamera 切换摄像头时,将自动恢复为初始值。
    例如,在引擎的生命周期内没有调用过镜像接口的前提下,从后置摄像头切到前置摄像头后,本地渲染将从原始状态变成镜像。
  • 初始值仅存在于调用镜像模式之前。一旦设置了镜像模式,即使调用 switchCamera 切换摄像采集源,镜像模式的设置也将继续生效,不会自动恢复为初始值。
    例如,当前摄像头为后置摄像头,将镜像模式设置为本地渲染镜像和编码镜像,此后切换为前置摄像头时,镜像模式仍为本地渲染镜像和编码镜像,直到调用镜像接口重新设置为其他模式。

示例项目

API 参考

说明:表格中的 macOS API 接口为 Objective-C。

平台

Android

iOS

macOS

Windows

Electron

Unity

Flutter

Web

版本

3.29 及以后版本

3.29 及以后版本

3.44 及以后版本

3.29 及以后版本

自首个对外版本

自首个对外版本

自首个对外版本

3.22.x 及以后版本
支持本地渲染镜像

设置镜像模式

setLocalVideoMirrorType

setLocalVideoMirrorType:

setLocalVideoMirrorType:

setLocalVideoMirrorType

setLocalVideoMirrorType

SetLocalVideoMirrorType

setLocalVideoMirrorType

setLocalVideoMirrorType

切换摄像头

switchCamera

switchCamera:

无

无

无

SwitchCamera

switchCamera

setVideoCaptureDevice

最近更新时间:2026.10.10 20:08:47
这个页面对您有帮助吗?
有用
有用
无用
无用