设置视频旋转方向
更新时间: 2024/08/01 16:43:37
为了让视频有更好的观看体验,App 往往需要实现视频横竖屏切换、默认竖屏或默认横屏等功能。为防止视频因旋转出现视频画面裁剪、缩放等问题,您可以通过 setLocalVideoConfig
的 orientationMode
参数,设置视频的旋转方向。
基本概念
-
Status Bar:移动端的系统状态栏。
-
UI 锁定:由开发者进行设置。UI 锁定时,即使用户打开屏幕自动旋转,也无法旋转。不锁定时,App 方向将跟随设备旋转。
-
屏幕自动旋转:开启时,App 方向将跟随设备旋转,用户可以在移动端系统控制栏中进行操作。
功能原理
采集端采集图像时,同时收集视频的旋转方向模式信息。播放端将接收到的视频图像进行渲染,并旋转方向模式信息对应地旋转视频,以达到和采集端表现一致。
orientationMode
参数提供了三种模式:
- VIDEO_OUTPUT_ORIENTATION_MODE_ADAPTATIVE(自适应模式)
- VIDEO_OUTPUT_ORIENTATION_MODE_FIXED_PORTRAIT(竖屏模式)
- VIDEO_OUTPUT_ORIENTATION_MODE_FIXED_LANDSCAPE(横屏模式)
具体说明参考下文。
自适应模式
该模式下,SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以自主调整视频方向的场景。
UI 锁定或关闭屏幕自动旋转
Status Bar 与屏幕的位置固定不变,不应重力感应而变化位置。因此视频和屏幕的相对位置,采集端和接收端始终保持一致。
采集端 | 接收端横屏 | 接收端竖屏 |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
UI 不锁定或开启屏幕自动旋转
Status Bar 总是在屏幕的顶端。
采集端 | 接收端横屏 | 接收端竖屏 |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
竖屏模式
该模式下,SDK 输出的视频相对于 Status Bar 总是处于竖屏模式。如果采集到的视频是横屏,则视频编码器会对视频进行裁剪。
如果采集到的视频是竖屏,则无需裁剪视频。该模式适用于当接收端无法调整视频方向时,例如旁路推流场景。
采集端 | 接收端横屏 | 接收端竖屏 |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
横屏模式
该模式下,SDK 输出的视频相对于 Status Bar 总是处于横屏模式。如果采集到的视频是竖屏,则视频编码器会对视频进行裁剪。如果采集到的视频是横屏,则无需裁剪视频。
该模式适用于当接收端无法调整视频方向时,例如旁路推流场景。
采集端 | 接收端横屏 | 接收端竖屏 |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
注意事项
- 若您集成的是 V4.6.0 之前的版本,设置旋转方向后,只会影响远端用户看到的视频画面。
- 若您集成的是 V4.6.0 及之后的版本,设置旋转方向后,会同时影响本端用户的预览画面和远端用户看到的视频画面。
实现 App 为竖屏模式
如果希望 App 界面为竖屏模式,例如微信的视频通话,您可以参考如下步骤:
-
设置 App UI 默认为竖屏。
在
AndroidManifest.xml
中,设置activity
的screenOrientation
属性为portrait
,即可指定该界面为竖屏模式。XML
<activity android:name=".NERTCMainActivity" android:launchMode="singleTask" android:windowSoftInputMode="adjustPan" android:screenOrientation="portrait" /><!--竖屏设置-->
-
推流端配置 SDK 使用竖屏模式。
加入房间前,通过 NERTC SDK 的
setLocalVideoConfig
设置视频属性时,将orientationMode
参数对值设置为VIDEO_OUTPUT_ORIENTATION_MODE_FIXED_PORTRAIT
(竖屏模式)。 -
拉流端配置 SDK 使用自适应模式。
加入房间前,通过 NERTC SDK 的
setLocalVideoConfig
设置视频属性时,将orientationMode
参数对值设置为VIDEO_OUTPUT_ORIENTATION_MODE_ADAPTATIVE
(自适应模式)。
实现 App 为横屏模式
如果要实现 App 界面为横屏模式,您可以参考如下步骤:
-
设置 App UI 默认为横屏。
在
AndroidManifest.xml
中,设置activity
的screenOrientation
属性为landscape
,即可指定该界面为横屏模式:XML
<activity android:name=".NERTCMainActivity" android:launchMode="singleTask" android:windowSoftInputMode="adjustPan" android:screenOrientation="landscape" /><!--横屏设置-->
-
推流端配置 SDK 使用横屏模式。
加入房间前,通过 NERTC SDK 的
setLocalVideoConfig
设置视频属性时,将orientationMode
参数对值设置为VIDEO_OUTPUT_ORIENTATION_MODE_FIXED_LANDSCAPE
(横屏模式)。 -
拉流端配置 SDK 使用自适应模式。
加入房间前,通过 NERTC SDK 的
setLocalVideoConfig
设置视频属性时,将orientationMode
参数对值设置为VIDEO_OUTPUT_ORIENTATION_MODE_ADAPTATIVE
(自适应模式)。