视频编码器配置的属性

最近更新时间:2022-09-20 05:17:40

视频编码的分辨率 (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;
ResolutionFrame Rate (fps)Base Bitrate (Kbps, for Communication)Live Bitrate (Kbps, for Live Broadcast)
160 × 1201565130
120 × 1201550100
320 × 18015140280
180 × 18015100200
240 × 18015120240
320 × 24015200400
240 × 24015140280
424 × 24015220440
640 × 36015400800
360 × 36015260520
640 × 360306001200
360 × 36030400800
480 × 36015320640
480 × 36030490980
640 × 480155001000
480 × 48015400800
640 × 480307501500
480 × 480306001200
848 × 480156101220
848 × 480309301860
640 × 48010400800
1280 × 7201511302260
1280 × 7203017103420
960 × 720159101820
960 × 7203013802760
1920 × 10801520804160
1920 × 10803031506300
1920 × 10806047806500
2560 × 14403048506500
2560 × 14406065006500
3840 × 21603065006500
3840 × 21606065006500

注意事项: 该表中的基准码率适用于通信场景。直播场景下通常需要较大码率来提升视频质量。推荐通过设置 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 对象