视频编码的分辨率 (px),用于衡量编码质量,以长x宽表示,默认值为 640 x 480
@property (assign, nonatomic) CGSize dimensions;
- ARVideoDimension120x120
- ARVideoDimension160x120
- ARVideoDimension180x180
- ARVideoDimension240x180
- ARVideoDimension320x180
- ARVideoDimension240x240
- ARVideoDimension320x240
- ARVideoDimension424x240
- ARVideoDimension360x360
- ARVideoDimension480x360
- ARVideoDimension640x360
- ARVideoDimension480x480
- ARVideoDimension640x480
- ARVideoDimension840x480
- ARVideoDimension960x720
- ARVideoDimension1280x720
- ARVideoDimension1920x1080 (macOS only)
- ARVideoDimension2540x1440 (macOS only)
- ARVideoDimension3840x2160 (macOS only)
注意事项:
- 该值不代表最终视频输出的方向。请查阅 ARVideoOutputOrientationMode 了解设置视频方向
- 视频能否达到 720P 的分辨率取决于设备的性能,在性能配备较低的设备上有可能无法实现。如果采用 720P 分辨率而设备性能跟不上,则有可能出现帧率过低的情况。
- iPhone 不支持 720P 以上的分辨率。
视频编码的帧率(fps)
@property (assign, nonatomic) NSInteger frameRate;
用户可以自行设置帧率,也可以在如下列表中直接选择想要的帧率。默认值为 15 帧。建议不要超过 30 帧。
- ARVideoFrameRateFps1(1): 1 fps
- ARVideoFrameRateFps7(7): 7 fps
- ARVideoFrameRateFps10(10): 10 fps
- ARVideoFrameRateFps15(15): 15 fps
- ARVideoFrameRateFps24(24): 24 fps
- ARVideoFrameRateFps30(30): 30 fps
- ARVideoFrameRateFps60(30): 60 fps (macOS only)
最低视频编码帧率(fps)
@property (assign, nonatomic) NSInteger minFrameRate;
单位为 fps,默认值为 -1,表示使用系统默认的最低编码帧率。关于该参数的适用场景及注意事项,请参考 设置视频属性(iOS) 或 设置视频属性(macOS)。
视频编码的码率
@property (assign, nonatomic) NSInteger bitrate;
Resolution | Frame Rate (fps) | Base Bitrate (Kbps, for Communication) | Live Bitrate (Kbps, for Live Broadcast) |
---|---|---|---|
160 × 120 | 15 | 65 | 130 |
120 × 120 | 15 | 50 | 100 |
320 × 180 | 15 | 140 | 280 |
180 × 180 | 15 | 100 | 200 |
240 × 180 | 15 | 120 | 240 |
320 × 240 | 15 | 200 | 400 |
240 × 240 | 15 | 140 | 280 |
424 × 240 | 15 | 220 | 440 |
640 × 360 | 15 | 400 | 800 |
360 × 360 | 15 | 260 | 520 |
640 × 360 | 30 | 600 | 1200 |
360 × 360 | 30 | 400 | 800 |
480 × 360 | 15 | 320 | 640 |
480 × 360 | 30 | 490 | 980 |
640 × 480 | 15 | 500 | 1000 |
480 × 480 | 15 | 400 | 800 |
640 × 480 | 30 | 750 | 1500 |
480 × 480 | 30 | 600 | 1200 |
848 × 480 | 15 | 610 | 1220 |
848 × 480 | 30 | 930 | 1860 |
640 × 480 | 10 | 400 | 800 |
1280 × 720 | 15 | 1130 | 2260 |
1280 × 720 | 30 | 1710 | 3420 |
960 × 720 | 15 | 910 | 1820 |
960 × 720 | 30 | 1380 | 2760 |
1920 × 1080 | 15 | 2080 | 4160 |
1920 × 1080 | 30 | 3150 | 6300 |
1920 × 1080 | 60 | 4780 | 6500 |
2560 × 1440 | 30 | 4850 | 6500 |
2560 × 1440 | 60 | 6500 | 6500 |
3840 × 2160 | 30 | 6500 | 6500 |
3840 × 2160 | 60 | 6500 | 6500 |
注意事项: 该表中的基准码率适用于通信场景。直播场景下通常需要较大码率来提升视频质量。推荐通过设置 ARVideoBitrateStandard 模式来实现。你也可以直接将码率值设为基准码率值 x 2。
最低编码码率
@property (assign, nonatomic) NSInteger minBitrate;
该参数设置最低编码码率,单位为 Kbps。
SDK会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳的情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,建议不要修改该参数的值。
注意事项: 该参数仅适用于直播场景。
视频编码的方向模式
@property (assign, nonatomic) ARVideoOutputOrientationMode orientationMode;
- ARVideoOutputOrientationModeAdaptative(0): (默认)该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景:
- 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
- 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
- ARVideoOutputOrientationModeFixedLandscape(1): 该模式下 SDK 固定输出风景(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
- ARVideoOutputOrientationModeFixedPortrait(2): 该模式下 SDK 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
带宽受限时的视频编码降级偏好
@property (assign, nonatomic) ARDegradationPreference degradationPreference;
ARDegradationPreference,有如下选项:
- ARDegradationMaintainQuality(0):(默认)降低编码帧率以保证视频质量
- ARDegradationMaintainFramerate(1):降低视频质量以保证编码帧率
- ARDegradationMaintainFramerate(2):(预留参数,暂不支持)在编码帧率和视频质量之间保持平衡。
设置本地发送视频的镜像模式
@property (assign, nonatomic) ARVideoMirrorMode mirrorMode;
-
ARVideoMirrorModeAuto = 0, (Default) 由 SDK 决定镜像模式
-
ARVideoMirrorModeEnabled = 1, 启用镜像模式
-
ARVideoMirrorModeDisabled = 2, 关闭镜像模式
注意事项:
- 只影响远端用户看到的视频画面。
- 默认关闭镜像模式。
initWithSize
- (instancetype _Nonnull)initWithSize:(CGSize)size frameRate:(ARVideoFrameRate)frameRate bitrate:(NSInteger)bitrate
orientationMode:(ARVideoOutputOrientationMode)orientationMode;
指定视频分辨率并初始化一个 ARVideoEncoderConfiguration 对象
参数
-
size
视频分辨率
-
frameRate
视频帧率,详见 ARVideoFrameRate
-
bitrate
视频码率
-
orientationMode
视频方向,详见 ARVideoOutputOrientationMode
返回值
初始化的 ARVideoEncoderConfiguration 对象
initWithWidth
- (instancetype _Nonnull)initWithWidth:(NSInteger)width height:(NSInteger)height frameRate:(ARVideoFrameRate)frameRate bitrate:(NSInteger)bitrate orientationMode:(ARVideoOutputOrientationMode)orientationMode;
指定视频宽和高并初始化一个 ARVideoEncoderConfiguration 对象
参数
-
width
视频宽度
-
height
视频高度
-
frameRate
视频帧率,详见 ARVideoFrameRate
-
bitrate
视频码率
-
orientationMode
orientationMode 视频方向,详见 ARVideoOutputOrientationMode
返回值
初始化的 ARVideoEncoderConfiguration 对象