Class 及 Enum
Class
AgoraServiceConfig
type AgoraServiceConfig struct {
EnableAudioProcessor bool
EnableAudioDevice bool
EnableVideo bool
AppId string
AreaCode AreaCode
ChannelProfile ChannelProfile
AudioScenario AudioScenario
UseStringUid bool
LogPath string
LogSize int
DomainLimit int
}
AgoraServiceConfig
类的全局配置。在调用 Initialize
方法时设置。
参数 | 描述 |
---|---|
EnableAudioProcessor | 是否开启音频处理模块。
|
EnableAudioDevice | 是否开启音频设备模块(Audio Device Module, ADM)。ADM 用来管理音频设备,例如录制和播放音频。
注意:如果你将 |
EnableVideo | 是否开启视频。
|
AppId | 你的声网项目的 App ID。如果你的声网项目开启了 Token 鉴权,你也可以将此参数赋值为 RTC Token。详见获取 App ID。 |
AreaCode | 服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。区域码支持位操作。指定访问区域后,SDK 会连接指定区域内的声网服务器。详见 AreaCode 。 |
ChannelProfile | 频道使用场景。详见 ChannelProfile 。 |
AudioScenario | 音频编码属性。详见 |
UseStringUid | 是否使用 String 用户 ID。
|
LogPath | 日志文件路径。 |
LogSize | 日志文件大小(字节)。 |
DomainLimit | 是否开启域名限制:
|
AudioEncoderConfiguration
type AudioEncoderConfiguration struct {
AudioProfile int
}
参数 | 描述 |
---|---|
AudioProfile | 音频场景:
|
AudioFrame
type AudioFrame struct {
Type AudioFrameType
SamplesPerChannel int
BytesPerSample int
Channels int
SamplesPerSec int
Buffer []byte
RenderTimeMs int64
AvsyncType int
}
参数 | 描述 |
---|---|
Type | 音频帧类型。详见 AudioFrameType 。 |
SamplesPerChannel | 对于每个声道,10 毫秒内采集的音频样本数。 |
BytesPerSample | 每个样本的字节数。 |
Channels | 每个样本的声道数。 |
SamplesPerSec | 采样率 (Hz)。最小值是 8000。 |
Buffer | 需要发送的 PCM 音频数据。 |
RenderTimeMs | 音频数据采集时间戳(毫秒)。 |
AvsyncType | 音视频同步类型。 |
EncodedAudioFrameInfo
type EncodedAudioFrameInfo struct {
Speech bool
Codec AudioCodecType
SampleRateHz int
SamplesPerChannel int
SendEvenIfEmpty bool
NumberOfChannels int
}
参数 | 描述 |
---|---|
Speech | 音频源是否为语音:
|
Codec | 音频编码类型。详见 AudioCodecType 。 |
SampleRateHz | 音频帧采样率(Hz)。 |
SamplesPerChannel | 每个声道的样本数。对于 aac 编码格式,默认为 1024;对于 Opus 编码格式,默认为 960。 |
SendEvenIfEmpty | 是否发送空音频帧:
|
NumberOfChannels | 音频帧的声道数。 |
EncodedVideoFrameInfo
type EncodedVideoFrameInfo struct {
CodecType VideoCodecType
Width int
Height int
FramesPerSecond int
FrameType VideoFrameType
Rotation VideoOrientation
TrackId int
CaptureTimeMs int64
DecodeTimeMs int64
Uid uint32
StreamType int
}
参数 | 描述 |
---|---|
CodecType | 视频编码类型。详见 VideoCodecType 。 |
Width | 视频帧宽度(像素)。 |
Height | 视频帧高度(像素)。 |
FramesPerSecond | 每秒的视频帧数量。用于计算编码视频帧的时间戳。如果设为 0,SDK 会使用真实的时间戳。 |
FrameType | 已编码视频帧类型。详见 |
Rotation | 已编码视频帧旋转信息。详见 VideoOrientation 。 |
TrackID | 视频帧的轨道 ID。 |
CaptureTimeMs | 采集外部编码视频帧的 Unix 时间戳(毫秒)。 |
DecodeTimeMs | 将外部编码视频帧进行解码的时间戳(毫秒)。 |
UID | 用户 ID。 |
StreamType | 视频帧的流类型:
|
EncryptionConfig
type EncryptionConfig struct {
EncryptionMode int
EncryptionKey string
EncryptionKdfSalt []byte
}
加密配置项。
参数 | 描述 |
---|---|
EncryptionMode | 加密模式:
|
EncryptionKey | 加密密钥,字符串类型,长度无限制。建议使用 32 字节的密钥。 |
EncryptionKdfSalt | 加密的盐值,长度为 32 字节。建议你在服务端使用 OpenSSL 生成盐。 |
ExternalVideoFrame
type ExternalVideoFrame struct {
Type VideoBufferType
Format VideoPixelFormat
Buffer []byte
Stride int
Height int
CropLeft int
CropTop int
CropRight int
CropBottom int
Rotation VideoOrientation
Timestamp int64
EGLContext unsafe.Pointer
EGLType int
TextureID int
Matrix [16]float32
MetadataBuffer []byte
AlphaBuffer []byte
FillAlphaBuffer bool
AlphaMode int
ColorSpace ColorSpaceType;
}
参数 | 描述 |
---|---|
Type | 视频数据类型。详见 VideoBufferType 。 |
Format | 像素格式。详见 VideoPixelFormat 。 |
Buffer | 视频缓冲区。 |
Stride | 传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。 |
Height | 传入视频帧的高度。 |
CropLeft | 原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。 |
CropTop | 原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。 |
CropRight | 原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。 |
CropBottom | 原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。 |
Rotation | 原始数据相关字段。指定是否对传入的视频做顺时针旋转操作,默认为 0。详见 VideoOrientation |
Timestamp | 传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。 |
EGLContext | 该参数仅适用于 Texture 格式的视频数据。
|
EGLType | 该参数仅适用于 Texture 格式的视频数据。指该视频帧的 EGL 类型。 |
TextureID | 该参数仅适用于 Texture 格式的视频数据。指该视频帧的 Texture ID。 |
Matrix | 该参数仅适用于 Texture 格式的视频数据。为一个输入的 4x4 变换矩阵,典型值为一个单位矩阵。 |
MetadataBuffer | 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的数据缓冲区,默认值为 nil 。 |
AlphaBuffer | 采用人像分割算法输出的 Alpha 通道数据。该数据跟视频帧的尺寸一致,每个像素点的取值范围为 [0,255],其中 0 代表背景;255 代表前景(人像)。你可以通过设置该参数,实现将视频背景自渲染为各种效果,例如:透明、纯色、图片、视频等。 |
FillAlphaBuffer | 自从 v2.2.3 起新增。 该参数仅适用于 BGRA 或 RGBA 格式的视频数据。设置提取视频祯中的 Alpha 通道数据并自动填入到 alphaBuffer 中。
对于 BGRA 或 RGBA 格式的视频数据,你可以任选一种方式设置 Alpha 通道数据:
|
alphaMode | 自从 v2.2.3 起新增。 当视频祯中包含 Alpha 通道数据时,设置 alphaBuffer 和视频祯的相对位置:
|
colorSpace | 自从 v2.2.3 起新增。 视频帧的色彩空间属性,默认情况下会应用 Full Range 和 BT.709 标准配置。你可以根据自定义采集、自定义渲染的业务需求进行自定义设置,详见 |
RtcConnectionConfig
type RtcConnectionConfig struct {
AutoSubscribeAudio bool
AutoSubscribeVideo bool
EnableAudioRecordingOrPlayout bool
MaxSendBitrate int
MinPort int
MaxPort int
ClientRole ClientRole
ChannelProfile ChannelProfile
AudioRecvMediaPacket bool
VideoRecvMediaPacket bool
}
参数 | 描述 |
---|---|
AutoSubscribeAudio | 是否自动订阅所有音频轨道。
|
AutoSubscribeVideo | 是否自动订阅所有视频轨道。
|
EnableAudioRecordingOrPlayout | 是否开启音频录制或播放。
|
MaxSendBitrate | 最大发送码率。 |
MinPort | 最小端口。 |
MaxPort | 最大端口。 |
ClientRole | 用户角色。详见 ClientRole 。 |
ChannelProfile | 频道场景。详见 ChannelProfile 。 |
AudioRecvMediaPacket | 是否接收音频媒体包。
|
VideoRecvMediaPacket | 是否接收视频媒体包。
|
RtcConnectionInfo
type RtcConnectionInfo struct {
ConnectionId uint
ChannelId string
State int
LocalUserId string
}
参数 | 描述 |
---|---|
ConnectionId | RTC 连接的 ID。 |
ChannelId | RTC 频道 ID。 如果你没有调用 Connect 方法,该参数返回 nil 。 |
State | 连接状态:
|
LocalUserId | 本地用户 ID。 |
VideoEncodedImageSenderOptions
type VideoEncodedImageSenderOptions struct {
CcMode VideoSendCcState
CodecType VideoCodecType
TargetBitrate int
}
参数 | 描述 |
---|---|
CcMode | 拥塞控制模式。详见 VideoSendCcState 。 |
CodecType | 视频编码类型。详见 VideoCodecType 。 |
TargetBitrate | 当前编码器的目标编码码率 (Kbps),该码率为 SDK 根据当前网络状况预估的一个值。 |
VideoEncoderConfiguration
type VideoEncoderConfiguration struct {
CodecType VideoCodecType
Width int
Height int
Framerate int
Bitrate int
MinBitrate int
OrientationMode VideoOrientation
DegradePreference int
}
参数 | 描述 |
---|---|
CodecType | 视频编码类型。详见 VideoCodecType 。 |
Width | 视频编码的宽度(px)。 |
Height | 视频编码的高度(px)。 |
Framerate | 视频编码的帧率 (fps),默认值为 15。 |
Bitrate | 视频编码码率,单位为 Kbps。 |
MinBitrate | 最低编码码率,单位为 Kbps。SDK 会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,声网建议不要修改该参数的值。 注意: 该参数仅适用于直播场景。 |
OrientationMode | 视频编码的方向模式。详见 |
DegradePreference | 带宽受限时,视频编码降级偏好:
|
VideoFrame
type VideoFrame struct {
Type VideoBufferType
Width int
Height int
YStride int
UStride int
VStride int
YBuffer []byte
UBuffer []byte
VBuffer []byte
Rotation VideoOrientation
RenderTimeMs int64
AVSyncType int
}
参数 | 描述 |
---|---|
Type | 视频数据类型。详见 VideoBufferType 。 |
Width | 视频帧宽度(像素)。 |
Height | 视频帧高度(像素)。 |
YStride | YUV 数据中的 Y 缓冲区的行跨度。 |
UStride | YUV 数据中的 U 缓冲区的行跨度。 |
VStride | YUV 数据中的 V 缓冲区的行跨度。 |
YBuffer | 指向 YUV 数据中的 Y 缓冲区指针的指针。 |
UBuffer | 指向 YUV 数据中的 U 缓冲区指针的指针。 |
VBuffer | 指向 YUV 数据中的 V 缓冲区指针的指针。 |
Rotation | 在渲染视频前设置该帧的顺时针旋转角度。详见 VideoOrientation 。 |
RenderTimeMs | 外部音频帧的时间戳。该参数为必填。你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以帮助实现音视频同步。 |
AVSyncType | 预留参数。 |
VideoSubscriptionOptions
type VideoSubscriptionOptions struct {
StreamType VideoStreamType
EncodedFrameOnly bool
}
参数 | 描述 |
---|---|
StreamType | 订阅的视频类型。详见 VideoStreamType 。 |
EncodedFrameOnly | 是否仅订阅已编码的视频数据:
|
Enum
AreaCode
服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。区域码支持位操作。指定访问区域后,SDK 会连接指定区域内的声网服务器。枚举值 | 描述 |
---|---|
AreaCodeCN | 0x00000001 : 中国大陆。 |
AreaCodeNA | 0x00000002 : 北美区域。 |
AreaCodeEU | 0x00000004 : 欧洲区域。 |
AreaCodeAS | 0x00000008 : 除中国大陆以外的亚洲区域。 |
AreaCodeJP | 0x00000010 : 日本。 |
AreaCodeIN | 0x00000020 : 印度。 |
AreaCodeGlob | 0xFFFFFFFF : (默认)全球。 |
AudioCodecType
音频编码类型。枚举值 | 描述 |
---|---|
AudioCodecOpus | 1 : OPUS |
AudioCodecPcma | 3 : PCMA |
AudioCodecPcmu | 4 : PCMU |
AudioCodecG722 | 5 : G722 |
AudioCodecAacLc | 8 : AAC LC |
AudioCodecHeAac | 9 : HE AAC |
AudioCodecHeAac2 | 11 : HEAAC2 |
AudioFrameType
音频帧类型。枚举值 | 描述 |
---|---|
AudioFrameTypePCM16 | 0 : 16 位 PCM |
AudioScenario
音频编码属性。枚举值 | 描述 |
---|---|
AudioScenarioDefault | 0 : (默认)自动场景,根据用户角色和音频路由自动匹配合适的音质。 |
AudioScenarioGameStreaming | 3 : 高音质场景,适用于音乐为主的场景。 |
AudioScenarioChatRoom | 5 : 聊天室场景,适用于用户需要频繁上下麦的场景。该场景下,观众会收到申请麦克风权限的弹窗提示。 |
AudioScenarioChorus | 7 : 合唱场景,适用于网络条件良好,要求极低延时的实时合唱场景。 |
AudioScenarioMeeting | 8 : 会议场景,适用于人声为主的多人会议。 |
ChannelProfile
频道使用场景。枚举值 | 描述 |
---|---|
ChannelProfileCommunication | 0 : (默认)通信场景。当频道中只有两个用户时,建议使用该场景。 |
ChannelProfileLiveBroadcasting | 1 : 直播场景。该场景有主播和观众两种用户角色。主播可以发布和接收音视频流,观众直接接收流。适用于语聊房、视频直播、互动大班课等应用场景。 |
ClientRole
用户角色。枚举值 | 描述 |
---|---|
ClientRoleBroadcaster | 1 : 主播。主播可以同时发送和接收媒体流。 |
ClientRoleAudience | 2 : 观众。观众只能接收媒体流。 |
UserMediaInfo
用户媒体信息。枚举值 | 描述 |
---|---|
UserMediaInfoMuteAudio | 0 : 用户已经停止发布音频流。 |
UserMediaInfoMuteVideo | 1 : 用户已经停止发布视频流。 |
UserMediaInfoEnableVideo | 4 : 用户已开启视频功能。 |
VideoBufferType
视频数据类型。枚举值 | 描述 |
---|---|
VideoBufferRawData | 1 : 原始数据。 |
VideoBufferArray | 2 : Array 数据。 |
VideoBufferTexture | 3 : Texture。 |
VideoCodecType
视频编码类型。枚举值 | 描述 |
---|---|
VideoCodecTypeNone | 0 : 无 |
VideoCodecTypeVp8 | 1 : VP8 |
VideoCodecTypeH264 | 2 : H.264 |
VideoCodecTypeH265 | 3 : H.265 |
VideoCodecTypeGeneric | 6 : Generic |
VideoCodecTypeGenericH264 | 7 : Generic H264 |
VideoCodecTypeAv1 | 12 : AV1 |
VideoCodecTypeVp9 | 13 : VP9 |
VideoCodecTypeGenericJpeg | 20 : JPEG |
VideoFrameType
已编码视频帧类型枚举值 | 描述 |
---|---|
VideoFrameTypeBlankFrame | 0 : 空白帧。 |
VideoFrameTypeKeyFrame | 3 : 关键帧。对于 H.264 编码格式,SDK 把带有 sps 和 pps 信息的 I 帧归类为关键帧。 |
VideoFrameTypeDeltaFrame | 4 : Delta 帧。对于 H.264 编码格式,SDK 把 P 帧和不带 sps 和 pps 信息的 I 帧都归类为 Delta 帧。 |
VideoFrameTypeBFrame | 5 : B 帧。 |
VideoFrameTypeDroppableFrame | 6 : 丢弃帧 |
VideoFrameTypeUnknown | -1 : 未知 |
VideoOrientation
原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作。枚举值 | 描述 |
---|---|
VideoOrientation0 | 0 : (默认)顺时针旋转 0 度。 |
VideoOrientation90 | 90 : 顺时针旋转 90 度。 |
VideoOrientation180 | 180 : 顺时针旋转 180 度。 |
VideoOrientation270 | 270 : 顺时针旋转 270 度。 |
VideoPixelFormat
像素格式。枚举值 | 描述 |
---|---|
VideoPixelDefault | 0 : 原始视频像素格式。 |
VideoPixelI420 | 1 : I420 格式。 |
VideoPixelRGBA | 4 : RGBA 格式。 |
VideoPixelI422 | 16 : I422 格式。 |
VideoTextureID3D11Texture2D | 17 : ID3D11TEXTURE2D 格式。目前支持的类型有 DXGI_FORMAT_B8G8R8A8_UNORM、DXGI_FORMAT_B8G8R8A8_TYPELESS 和 DXGI_FORMAT_NV12。 |
SDK 目前不支持 Alpha 通道。传入的 Alpha 值将被丢弃。
VideoSendCcState
拥塞控制模式。枚举值 | 描述 |
---|---|
VideoSendCcEnabled | 0 : 开启拥塞控制。 |
VideoSendCcDisabled | 1 : 关闭拥塞控制。 |
VideoStreamType
视频流类型。枚举值 | 描述 |
---|---|
VideoStreamHigh | 0 : (默认)大流。分辨率和码率较高。 |
VideoStreamLow | 1 : 小流。分辨率和码率较低。 |