AgoraVideoEncoderConfiguration 类

Inherits from NSObject
Declared in AgoraObjects.h

概览

视频编码器配置的属性

  dimensions

视频编码的分辨率

@property (assign, nonatomic) CGSize dimensions

详情

视频编码的分辨率 (px),用于衡量编码质量,以长x宽表示,默认值为 640 x 360。用户可以自行设置分辨率,也可以在如下列表中直接选择想要的分辨率:

  • AgoraVideoDimension120x120: 视频分辨率为 120x120
  • AgoraVideoDimension160x120: 视频分辨率为 160x120
  • AgoraVideoDimension180x180: 视频分辨率为 180x180
  • AgoraVideoDimension240x180: 视频分辨率为 240x180
  • AgoraVideoDimension320x180: 视频分辨率为 320x180
  • AgoraVideoDimension240x240: 视频分辨率为 240x240
  • AgoraVideoDimension320x240: 视频分辨率为 320x240
  • AgoraVideoDimension424x240: 视频分辨率为 424x240
  • AgoraVideoDimension360x360: 视频分辨率为 360x360
  • AgoraVideoDimension480x360: 视频分辨率为 480x360
  • AgoraVideoDimension640x360: 视频分辨率为 640x360
  • AgoraVideoDimension480x480: 视频分辨率为 480x480
  • AgoraVideoDimension640x480: 视频分辨率为 640x480
  • AgoraVideoDimension840x480: 视频分辨率为 840x480
  • AgoraVideoDimension960x720: 视频分辨率为 960x720
  • AgoraVideoDimension1280x720: 视频分辨率为 1280x720
  • AgoraVideoDimension1920x1080: 视频分辨率为 1920x1080(仅支持 macOS)
  • AgoraVideoDimension2540x1440: 视频分辨率为 2540x1440(仅支持 macOS)
  • AgoraVideoDimension3840x2160: 视频分辨率为 3840x2160(仅支持 macOS)

Note:

  • 该值不代表最终视频输出的方向。请查阅 AgoraVideoOutputOrientationMode 了解设置视频方向
  • 视频能否达到 720P 的分辨率取决于设备的性能,在性能配备较低的设备上有可能无法实现。如果采用 720P 分辨率而设备性能跟不上,则有可能出现帧率过低的情况。
  • iPhone 不支持 720P 以上的分辨率。

Declared In

AgoraObjects.h

  frameRate

视频编码的帧率(fps)

@property (assign, nonatomic) NSInteger frameRate

详情

用户可以自行设置帧率,也可以在如下列表中直接选择想要的帧率。默认值为 15 帧。建议不要超过 30 帧。

  • AgoraVideoFrameRateFps1(1):每秒钟 1 帧
  • AgoraVideoFrameRateFps7(7):每秒钟 7 帧
  • AgoraVideoFrameRateFps10(10):每秒钟 10 帧
  • AgoraVideoFrameRateFps15(15):每秒钟 15 帧
  • AgoraVideoFrameRateFps24(24):每秒钟 24 帧
  • AgoraVideoFrameRateFps30(30):每秒钟 30 帧
  • AgoraVideoFrameRateFps60(60):每秒钟 60 帧 (仅支持 macOS)

Declared In

AgoraObjects.h

  minFrameRate

最低视频编码帧率

@property (assign, nonatomic) NSInteger minFrameRate

详情

单位为 fps,默认值为 -1,表示使用系统默认的最低编码帧率。关于该参数的适用场景及注意事项,请参考 设置视频属性(iOS)设置视频属性(macOS)

Declared In

AgoraObjects.h

  bitrate

视频编码的码率

@property (assign, nonatomic) NSInteger bitrate

详情

该参数设置视频编码码率,单位为 Kbps。你可以根据场景需要,参考下表,手动设置你想要的码率。若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率。你也可以直接选择如下任意一种模式进行设置:

  • AgoraVideoBitrateStandard: (推荐)标准码率模式。该模式下,视频在通信和直播场景下的码率有所不同:通信场景下,码率与基准码率一致;直播场景下,码率对照基准码率翻倍。
  • AgoraVideoBitrateCompatible: 适配码率模式。该模式下,视频在通信和直播场景下的码率均与基准码率一致。直播下如果选择该场景,视频帧率可能会低于设置的值。

Agora 在通信和直播场景下采用不同的编码方式,以提升不同场景下的用户体验。通信场景保证流畅,而直播场景则更注重画面质量,因此直播场景对码率的需求大于通信场景。所以 Agora 推荐将该参数设置为 AgoraVideoBitrateStandard。

视频码率参考表

分辨率 (宽x高) 帧率 (fps) 基准码率 (Kbps, 通信场景) 直播码率 (Kbps, 直播场景)
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

Note:

该表中的基准码率适用于通信场景。直播场景下通常需要较大码率来提升视频质量。Agora 推荐通过设置 AgoraVideoBitrateStandard 模式来实现。你也可以直接将码率值设为基准码率值 x 2。

Declared In

AgoraObjects.h

  minBitrate

最低编码码率

@property (assign, nonatomic) NSInteger minBitrate

详情

该参数设置最低编码码率,单位为 Kbps。

Agora SDK 会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳的情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,声网建议不要修改该参数的值。

Note:

该参数仅适用于直播场景。

Declared In

AgoraObjects.h

  orientationMode

视频编码的方向模式

@property (assign, nonatomic) AgoraVideoOutputOrientationMode orientationMode

详情

AgoraVideoOutputOrientationMode ,具体设置如下:

  • AgoraVideoOutputOrientationModeAdaptative(0): (默认)该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景:

    • 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
    • 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
  • AgoraVideoOutputOrientationModeFixedLandscape(1): 该模式下 SDK 固定输出风景(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。

  • AgoraVideoOutputOrientationModeFixedPortrait(2): 该模式下 SDK 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。

Declared In

AgoraObjects.h

  degradationPreference

带宽受限时的视频编码降级偏好

@property (assign, nonatomic) AgoraDegradationPreference degradationPreference

详情

AgoraDegradationPreference,有如下选项:

  • AgoraDegradationMaintainQuality(0):(默认)降低编码帧率以保证视频质量
  • AgoraDegradationMaintainFramerate(1):降低视频质量以保证编码帧率

Declared In

AgoraObjects.h

  mirrorMode

设置本地发送视频的镜像模式,只影响远端用户看到的视频画面。详见 AgoraVideoMirrorMode

@property (assign, nonatomic) AgoraVideoMirrorMode mirrorMode

详情

Note

默认关闭镜像模式。

Declared In

AgoraObjects.h

– initWithSize:frameRate:bitrate:orientationMode:

指定视频分辨率并初始化一个 AgoraVideoEncoderConfiguration 对象

- (instancetype _Nonnull)initWithSize:(CGSize)size frameRate:(AgoraVideoFrameRate)frameRate bitrate:(NSInteger)bitrate orientationMode:(AgoraVideoOutputOrientationMode)orientationMode

参数

size

视频分辨率

frameRate

视频帧率,详见 AgoraVideoFrameRate

bitrate

视频码率

orientationMode

视频方向,详见 AgoraVideoOutputOrientationMode

返回

初始化的 AgoraVideoEncoderConfiguration 对象

详情

初始化时可以设置下列视频属性:

Declared In

AgoraObjects.h

– initWithWidth:height:frameRate:bitrate:orientationMode:

指定视频宽和高并初始化一个 AgoraVideoEncoderConfiguration 对象

- (instancetype _Nonnull)initWithWidth:(NSInteger)width height:(NSInteger)height frameRate:(AgoraVideoFrameRate)frameRate bitrate:(NSInteger)bitrate orientationMode:(AgoraVideoOutputOrientationMode)orientationMode

参数

width

视频宽度

height

视频高度

frameRate

视频帧率,详见 AgoraVideoFrameRate

bitrate

视频码率

orientationMode

视频方向,详见 AgoraVideoOutputOrientationMode

返回

初始化的 AgoraVideoEncoderConfiguration 对象

详情

初始化时可以设置以下属性:

Declared In

AgoraObjects.h