适用场景

使用移动端进行视频通话时,可能发生横竖屏切换,为了提供更好的观看体验,需要根据用户使用场景,对视频旋转方向进行相应设置,防止出现视频画面发生方向颠倒等问题。

前提条件

你已经集成 v3.36 或更高版本的 RTC SDK,实现了基本的音视频通话。
支持渲染功能的 SDK 详见API 参考。

名词解释
功能说明

采集端采集和发送的视频帧,包括对视频帧进行旋转角度的信息。接收端渲染视频时,将按照与采集端相同的方式进行旋转。
我们提供 setVideoRotationMode,在内部采集时设置旋转模式,约定旋转方向的参考系。旋转方向的参考系可以设置为 App 方向(默认)或重力方向。
接收端可以调用setRemoteVideoCanvas调整视频帧的渲染模式,以下以fit填充模式为例。在该模式下,SDK 不会对采集到的图像进行裁剪。

作用范围
当 UI 不锁定且屏幕自动旋转开启时

此时两种旋转模式下接收端表现一致。

采集端接收端
当设置 UI 锁定或关闭屏幕自动旋转时

此时不同旋转模式的表现如下:

图示以接收端 UI 不锁定且屏幕自动旋转开启为例。接收端 UI 锁定或关闭屏幕自动旋转时,视频画面与状态栏的相对位置保持不变。

采集端
接收端(采集端设置旋转模式为 App 方向)接收端(采集端设置旋转模式为重力方向)
功能实现
// 开启视频采集
rtcVideo.startVideoCapture();

// 设置旋转模式
rtcVideo.setVideoRotationMode(VideoRotationMode.FOLLOW_APP);
java
// 开启视频采集
self.rtcVideo?.startVideoCapture()

// 设置方向
self?.rtcVideo?.setVideoRotationMode(rotation)
swift
注意事项
示例项目

参考以下项目获取完整代码。

API 参考
AndroidiOSFlutterUnity
setVideoRotationModesetVideoRotationModesetVideoRotationModeSetVideoRotationMode