AgoraVideoEncoderConfiguration Class Reference
Inherits from | NSObject |
---|---|
Declared in | AgoraObjects.h |
dimensions
视频编码的分辨率
@property (assign, nonatomic) CGSize dimensions
Discussion
视频编码的分辨率 (px),用于衡量编码质量,以长x宽表示,默认值为 640 x 360。用户可以自行设置分辨率,也可以在如下列表中直接选择想要的分辨率:
- AgoraVideoDimension120x120: 视频分辨率为 120 * 120
- AgoraVideoDimension160x120: 视频分辨率为 160 * 120
- AgoraVideoDimension180x180: 视频分辨率为 180 * 180
- AgoraVideoDimension240x180: 视频分辨率为 240 * 180
- AgoraVideoDimension320x180: 视频分辨率为 320 * 180
- AgoraVideoDimension240x240: 视频分辨率为 240 * 240
- AgoraVideoDimension320x240: 视频分辨率为 320 * 240
- AgoraVideoDimension424x240: 视频分辨率为 424 * 240
- AgoraVideoDimension360x360: 视频分辨率为 360 * 360
- AgoraVideoDimension480x360: 视频分辨率为 480 * 360
- AgoraVideoDimension640x360: 视频分辨率为 640 * 360
- AgoraVideoDimension480x480: 视频分辨率为 480 * 480
- AgoraVideoDimension640x480: 视频分辨率为 640 * 480
- AgoraVideoDimension840x480: 视频分辨率为 840 * 480
- AgoraVideoDimension960x720: 视频分辨率为 960 * 720
- AgoraVideoDimension1280x720: 视频分辨率为 1280 * 720
- AgoraVideoDimension1920x1080: 视频分辨率为 1920 * 1080(仅支持 macOS)
Note:
- 该值不代表最终视频输出的方向。请查阅 AgoraVideoOutputOrientationMode 了解设置视频方向
- 视频能否达到 720P 的分辨率取决于设备的性能,在性能配备较低的设备上有可能无法实现。如果采用 720P 分辨率而设备性能跟不上,则有可能出现帧率过低的情况。
Declared In
AgoraObjects.h
frameRate
视频编码的帧率(fps)
@property (assign, nonatomic) NSInteger frameRate
Discussion
用户可以自行设置帧率,也可以在如下列表中直接选择想要的帧率。默认值为 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
Discussion
单位为 fps,默认值为 -1,表示使用系统默认的最低编码帧率。关于该参数的适用场景及注意事项,请参考《设置视频属性》。
Declared In
AgoraObjects.h
bitrate
视频编码的码率
@property (assign, nonatomic) NSInteger bitrate
Discussion
该参数设置视频编码码率,单位为 Kbps。你可以根据场景需要,参考下表,手动设置你想要的码率。若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率。你也可以直接选择如下任意一种模式进行设置:
- AgoraVideoBitrateStandard: (推荐)标准码率模式。该模式下,视频在通信和直播场景下的码率有所不同:通信场景下,码率与基准码率一致;直播场景下,码率对照基准码率翻倍。
- AgoraVideoBitrateCompatible: 适配码率模式。该模式下,视频在通信和直播场景下的码率均与基准码率一致。直播下如果选择该场景,视频帧率可能会低于设置的值。
声网在通信和直播场景下采用不同的编码方式,以提升不同场景下的用户体验。通信场景保证流畅,而直播场景则更注重画面质量,因此直播场景对码率的需求大于通信场景。所以声网推荐将该参数设置为 AgoraVideoBitrateStandard。
视频码率参考表
分辨率 (宽 * 高) | 帧率 (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 |
Note:
该表中的基准码率适用于通信场景。直播场景下通常需要较大码率来提升视频质量。声网推荐通过设置 AgoraVideoBitrateStandard 模式来实现。你也可以直接将码率值设为基准码率值 x 2。
Declared In
AgoraObjects.h
minBitrate
最低编码码率
@property (assign, nonatomic) NSInteger minBitrate
Discussion
该参数设置最低编码码率,单位为 Kbps。
SDK 会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳的情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,声网建议不要修改该参数的值。
Note:
该参数仅适用于直播场景。
Declared In
AgoraObjects.h
orientationMode
视频编码的方向模式
@property (assign, nonatomic) AgoraVideoOutputOrientationMode orientationMode
Discussion
AgoraVideoOutputOrientationMode ,具体设置如下:
AgoraVideoOutputOrientationModeAdaptative(0): (默认)该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景:
- 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
- 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
AgoraVideoOutputOrientationModeFixedLandscape(1): 该模式下 SDK 固定输出风景(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
- AgoraVideoOutputOrientationModeFixedPortrait(2): 该模式下 SDK 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
Declared In
AgoraObjects.h
degradationPreference
带宽受限时的视频编码降级偏好
@property (assign, nonatomic) AgoraDegradationPreference degradationPreference
Discussion
AgoraDegradationPreference ,有如下选项:
- AgoraDegradationMaintainQuality(0):(默认)降低编码帧率以保证视频质量
- AgoraDegradationMaintainFramerate(1):降低视频质量以保证编码帧率
Declared In
AgoraObjects.h
mirrorMode
设置本地发送视频的镜像模式,只影响远端用户看到的视频画面。详见 AgoraVideoMirrorMode
@property (assign, nonatomic) AgoraVideoMirrorMode mirrorMode
Discussion
Note
默认关闭镜像模式。
Declared In
AgoraObjects.h
– initWithSize:frameRate:bitrate:orientationMode:
指定视频分辨率并初始化一个 AgoraVideoEncoderConfiguration 对象
- (instancetype _Nonnull)initWithSize:(CGSize)size frameRate:(AgoraVideoFrameRate)frameRate bitrate:(NSInteger)bitrate orientationMode:(AgoraVideoOutputOrientationMode)orientationMode
Parameters
size |
视频分辨率 |
---|---|
frameRate |
视频帧率,详见 AgoraVideoFrameRate |
bitrate |
视频码率 |
orientationMode |
视频方向,详见 AgoraVideoOutputOrientationMode |
Return Value
初始化的 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
Parameters
width |
视频宽度 |
---|---|
height |
视频高度 |
frameRate |
视频帧率,详见 AgoraVideoFrameRate |
bitrate |
视频码率 |
orientationMode |
视频方向,详见 AgoraVideoOutputOrientationMode |
Return Value
初始化的 AgoraVideoEncoderConfiguration 对象
Declared In
AgoraObjects.h