类及枚举

  • Go

更新时间不可用

类

AgoraServiceConfig

Go
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

是否开启音频处理模块。

  • true: (默认) 开启音频处理模块。
  • false: 关闭音频处理模块。你将无法创建音频轨道。
EnableAudioDevice

是否开启音频设备模块(Audio Device Module, ADM)。ADM 用来管理音频设备,例如录制和播放音频。

  • true: (默认) 开启音频设备模块。你可以录制和播放音频。
  • false: 关闭音频设备模块。你无法录制和播放音频。

注意:如果你将 EnableAudioDevice 设为 false 且将 EnableAudioProcessor 设为 true,你将无法使用音频设备,但你可以推送 PCM 音频数据。

EnableVideo

是否开启视频。

  • true: 开启视频。
  • false: (默认) 关闭视频。
AppId你的声网项目的 App ID。如果你的声网项目开启了 Token 鉴权,你也可以将此参数赋值为 RTC Token。详见获取 App ID。
AreaCode服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。区域码支持位操作。指定访问区域后,SDK 会连接指定区域内的声网服务器。详见 AreaCode。
ChannelProfile频道使用场景。详见 ChannelProfile。
AudioScenario音频编码属性。详见 AudioScenario。
UseStringUid

是否使用 String 用户 ID。

  • true: 使用。
  • false: 不使用。
LogPath日志文件路径。
LogSize日志文件大小(字节)。
DomainLimit

是否开启域名限制:

  • 1:仅连接被 DNS 解析过的服务器。
  • 0:(默认)连接服务器无限制。
表格内容超出当前宽度,可横向滚动查看更多列。

AudioEncoderConfiguration

Go
type AudioEncoderConfiguration struct {
    AudioProfile int
}
音频编码设置。
参数描述
AudioProfile

音频场景:

  • 0: 默认音频场景。
    • 通信场景下:16 KHz 采样率,语音编码,单声道,编码码率最大值为 16 Kbps。
    • 直播场景下:48 KHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。
  • 1: 指定 32 KHz 采样率,语音编码,单声道,编码码率最大值为 18 Kbps。
  • 2: 指定 48 KHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。
  • 3: 指定 48 KHz 采样率,音乐编码,双声道,编码码率最大值为 80 Kbps。
  • 4: 指定 48 KHz 采样率,音乐编码,单声道,编码码率最大值为 96 Kbps。
  • 5: 指定 48 KHz 采样率,音乐编码,双声道,编码码率最大值为 128 Kbps。
  • 6: 指定 16 kHz 采样率,语音编码,单声道,应用回声消除算法 AES。
表格内容超出当前宽度,可横向滚动查看更多列。

AudioFrame

Go
type AudioFrame struct {
    Type              AudioFrameType
    SamplesPerChannel int
    BytesPerSample    int
    Channels          int
    SamplesPerSec     int
    Buffer            []byte
    RenderTimeMs      int64
    AvsyncType        int
}
PCM 音频数据。
参数描述
Type音频帧类型。详见 AudioFrameType。
SamplesPerChannel对于每个声道,10 毫秒内采集的音频样本数。
BytesPerSample每个样本的字节数。
Channels每个样本的声道数。
SamplesPerSec采样率 (Hz)。最小值是 8000。
Buffer需要发送的 PCM 音频数据。
RenderTimeMs音频数据采集时间戳(毫秒)。
AvsyncType音视频同步类型。
表格内容超出当前宽度,可横向滚动查看更多列。

EncodedAudioFrameInfo

Go
type EncodedAudioFrameInfo struct {
    Speech bool
    Codec AudioCodecType
    SampleRateHz int
    SamplesPerChannel int
    SendEvenIfEmpty bool
    NumberOfChannels int
}
已编码的音频数据。
参数描述
Speech

音频源是否为语音:

  • 0: 音频源不是语音。
  • 1: (默认)音频源是语音。
Codec音频编码类型。详见 AudioCodecType。
SampleRateHz音频帧采样率(Hz)。
SamplesPerChannel每个声道的样本数。对于 aac 编码格式,默认为 1024;对于 Opus 编码格式,默认为 960。
SendEvenIfEmpty

是否发送空音频帧:

  • 0: 不发送空音频帧。
  • 1: (默认)发送空音频帧。
NumberOfChannels音频帧的声道数。
表格内容超出当前宽度,可横向滚动查看更多列。

EncodedVideoFrameInfo

Go
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已编码视频帧类型。详见 VideoFrameType。
Rotation已编码视频帧旋转信息。详见 VideoOrientation。
TrackID视频帧的轨道 ID。
CaptureTimeMs采集外部编码视频帧的 Unix 时间戳(毫秒)。
DecodeTimeMs将外部编码视频帧进行解码的时间戳(毫秒)。
UID用户 ID。
StreamType

视频帧的流类型:

  • 0: 大流。分辨率和码率较高。
  • 1: 小流。分辨率和码率较低。
表格内容超出当前宽度,可横向滚动查看更多列。

EncryptionConfig

Go
type EncryptionConfig struct {
	EncryptionMode int
	EncryptionKey string
	EncryptionKdfSalt []byte
}

加密配置项。

参数描述
EncryptionMode

加密模式:

  • 1:128 位 AES 加密,XTS 模式。
  • 2:128 位 AES 加密,ECB 模式。
  • 3:256 位 AES 加密,XTS 模式。
  • 4:128 位 SM4 加密,ECB 模式。
  • 5:128 位 AES 加密,GCM 模式。
  • 6:256 位 AES 加密,GCM 模式。x
  • 7:(默认)128 位 AES 加密,GCM 模式。该加密模式需要设置盐(EncryptionKdfSalt)。
  • 8:256 位 AES 加密,GCM 模式。该加密模式需要设置盐(EncryptionKdfSalt)。
EncryptionKey加密密钥,字符串类型,长度无限制。建议使用 32 字节的密钥。
EncryptionKdfSalt加密的盐值,长度为 32 字节。建议你在服务端使用 OpenSSL 生成盐。
表格内容超出当前宽度,可横向滚动查看更多列。

ExternalVideoFrame

Go
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;
}
YUV 格式的视频数据。
参数描述
Type视频数据类型。详见 VideoBufferType。
Format像素格式。详见 VideoPixelFormat。
Buffer视频缓冲区。
Stride传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。
Height传入视频帧的高度。
CropLeft原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。
CropTop原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。
CropRight原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。
CropBottom原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。该参数仅适用于原始视频数据。
Rotation原始数据相关字段。指定是否对传入的视频做顺时针旋转操作,默认为 0。详见 VideoOrientation
Timestamp传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。
EGLContext

该参数仅适用于 Texture 格式的视频数据。

  • 当使用 Khronos 定义的 OpenGL 接口 (javax.microedition.khronos.egl.*)时,需要将 eglContext 设置给这个字段。
  • 当使用 Android 定义的 OpenGL 接口 (android.opengl.*)时,需要将 eglContext 设置给这个字段。
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 中。

  • true: 提取并填充 Alpha 通道数据。
  • false: (默认)不提取填充 Alpha 通道数据。

对于 BGRA 或 RGBA 格式的视频数据,你可以任选一种方式设置 Alpha 通道数据:

  • 通过将该参数设置为 true 自动填写。
  • 通过 alphaBuffer 参数设置。
alphaMode

自从

v2.2.3 起新增。

当视频祯中包含 Alpha 通道数据时,设置 alphaBuffer 和视频祯的相对位置:

  • 0: (默认)仅视频祯,即 alphaBuffer 不和视频祯拼接。
  • 1: alphaBuffer 位于视频帧的上方。
  • 2: alphaBuffer 位于视频帧的下方。
  • 3: alphaBuffer 位于视频帧的左侧。
  • 4: alphaBuffer 位于视频帧的右侧。
colorSpace

自从

v2.2.3 起新增。

视频帧的色彩空间属性,默认情况下会应用 Full Range 和 BT.709 标准配置。你可以根据自定义采集、自定义渲染的业务需求进行自定义设置,详见 ColorSpaceType。

表格内容超出当前宽度,可横向滚动查看更多列。

RtcConnectionConfig

Go
type RtcConnectionConfig struct {
    AutoSubscribeAudio bool
    AutoSubscribeVideo bool
    EnableAudioRecordingOrPlayout bool
    MaxSendBitrate int
    MinPort int
    MaxPort int
    ClientRole     ClientRole
    ChannelProfile ChannelProfile
    AudioRecvMediaPacket bool
    VideoRecvMediaPacket bool
}
RTC 连接配置。
参数描述
AutoSubscribeAudio

是否自动订阅所有音频轨道。

  • 0: 不自动订阅所有音频轨道。
  • 1: (默认) 自动订阅所有音频轨道。
AutoSubscribeVideo

是否自动订阅所有视频轨道。

  • 0: 不自动订阅所有视频轨道。
  • 1: (默认) 自动订阅所有视频轨道。
EnableAudioRecordingOrPlayout

是否开启音频录制或播放。

  • false: 关闭音频录制或播放。
  • true: 开启音频录制或播放。
MaxSendBitrate最大发送码率。
MinPort最小端口。
MaxPort最大端口。
ClientRole用户角色。详见 ClientRole。
ChannelProfile频道场景。详见 ChannelProfile。
AudioRecvMediaPacket

是否接收音频媒体包。

  • false: 不接收。
  • true: 接收。
VideoRecvMediaPacket

是否接收视频媒体包。

  • false: 不接收。
  • true: 接收。
表格内容超出当前宽度,可横向滚动查看更多列。

RtcConnectionInfo

Go
type RtcConnectionInfo struct {
    ConnectionId uint
    ChannelId string
    State int
    LocalUserId string
}
RTC 连接信息。
参数描述
ConnectionIdRTC 连接的 ID。
ChannelIdRTC 频道 ID。 如果你没有调用 Connect 方法,该参数返回 nil。
State

连接状态:

  • 1: 网络连接断开。
  • 2: 建立网络连接中。
  • 3: 网络已连接。
  • 4: 重新建立网络连接中 。
  • 5: 网络连接失败 。
LocalUserId本地用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoEncodedImageSenderOptions

Go
type VideoEncodedImageSenderOptions struct {
    CcMode         VideoSendCcState
    CodecType      VideoCodecType
    TargetBitrate  int
}
包含发送编码视频数据的视频源的本地视频轨道对象配置。
参数描述
CcMode拥塞控制模式。详见 VideoSendCcState。
CodecType视频编码类型。详见 VideoCodecType。
TargetBitrate当前编码器的目标编码码率 (Kbps),该码率为 SDK 根据当前网络状况预估的一个值。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoEncoderConfiguration

Go
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视频编码的方向模式。详见 VideoOrientation。
DegradePreference

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

  • 0: (默认)带宽受限时,视频编码时优先降低视频帧率,维持视频质量不变。该降级偏好适用于画质优先的场景。
  • 1: 带宽受限时,视频编码时优先降低视频质量,维持视频帧率不变。该降级偏好适用于流畅性优先且允许画质降低的场景。
  • 2: 带宽受限时,视频编码时同时降低视频帧率和视频质量。2 的降幅比 0 和 1 降幅更低,适用于流畅性和画质均有限的场景。
  • 3: 带宽受限时,视频编码时优先降低视频帧率。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoFrame

Go
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
}
视频帧的属性设置。视频数据的格式为 YUV420。缓冲区给出的是指向指针的指针,该接口不能修改缓冲区的指针,只能修改缓冲区的内容。
参数描述
Type视频数据类型。详见 VideoBufferType。
Width视频帧宽度(像素)。
Height视频帧高度(像素)。
YStrideYUV 数据中的 Y 缓冲区的行跨度。
UStrideYUV 数据中的 U 缓冲区的行跨度。
VStrideYUV 数据中的 V 缓冲区的行跨度。
YBuffer指向 YUV 数据中的 Y 缓冲区指针的指针。
UBuffer指向 YUV 数据中的 U 缓冲区指针的指针。
VBuffer指向 YUV 数据中的 V 缓冲区指针的指针。
Rotation在渲染视频前设置该帧的顺时针旋转角度。详见 VideoOrientation。
RenderTimeMs外部音频帧的时间戳。该参数为必填。你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以帮助实现音视频同步。
AVSyncType预留参数。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoSubscriptionOptions

Go
type VideoSubscriptionOptions struct {
    StreamType        VideoStreamType
    EncodedFrameOnly  bool
}
视频订阅选项。
参数描述
StreamType订阅的视频类型。详见 VideoStreamType。
EncodedFrameOnly

是否仅订阅已编码的视频数据:

  • true: 仅订阅已编码的视频数据。
  • false: (默认)仅订阅已解码的视频数据。
表格内容超出当前宽度,可横向滚动查看更多列。

枚举

AreaCode

服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。区域码支持位操作。指定访问区域后,SDK 会连接指定区域内的声网服务器。
枚举值描述
AreaCodeCN0x00000001: 中国大陆。
AreaCodeNA0x00000002: 北美区域。
AreaCodeEU0x00000004: 欧洲区域。
AreaCodeAS0x00000008: 除中国大陆以外的亚洲区域。
AreaCodeJP0x00000010: 日本。
AreaCodeIN0x00000020: 印度。
AreaCodeGlob0xFFFFFFFF: (默认)全球。
表格内容超出当前宽度,可横向滚动查看更多列。

AudioCodecType

音频编码类型。
枚举值描述
AudioCodecOpus1: OPUS
AudioCodecPcma3: PCMA
AudioCodecPcmu4: PCMU
AudioCodecG7225: G722
AudioCodecAacLc8: AAC LC
AudioCodecHeAac9: HE AAC
AudioCodecHeAac211: HEAAC2
表格内容超出当前宽度,可横向滚动查看更多列。

AudioFrameType

音频帧类型。
枚举值描述
AudioFrameTypePCM160: 16 位 PCM
表格内容超出当前宽度,可横向滚动查看更多列。

AudioScenario

音频编码属性。
枚举值描述
AudioScenarioDefault0: (默认)自动场景,根据用户角色和音频路由自动匹配合适的音质。
AudioScenarioGameStreaming3: 高音质场景,适用于音乐为主的场景。
AudioScenarioChatRoom5: 聊天室场景,适用于用户需要频繁上下麦的场景。该场景下,观众会收到申请麦克风权限的弹窗提示。
AudioScenarioChorus7: 合唱场景,适用于网络条件良好,要求极低延时的实时合唱场景。
AudioScenarioMeeting8: 会议场景,适用于人声为主的多人会议。
表格内容超出当前宽度,可横向滚动查看更多列。

ChannelProfile

频道使用场景。
枚举值描述
ChannelProfileCommunication0: (默认)通信场景。当频道中只有两个用户时,建议使用该场景。
ChannelProfileLiveBroadcasting1: 直播场景。该场景有主播和观众两种用户角色。主播可以发布和接收音视频流,观众直接接收流。适用于语聊房、视频直播、互动大班课等应用场景。
表格内容超出当前宽度,可横向滚动查看更多列。

ClientRole

用户角色。
枚举值描述
ClientRoleBroadcaster1: 主播。主播可以同时发送和接收媒体流。
ClientRoleAudience2: 观众。观众只能接收媒体流。
表格内容超出当前宽度,可横向滚动查看更多列。

UserMediaInfo

用户媒体信息。
枚举值描述
UserMediaInfoMuteAudio0: 用户已经停止发布音频流。
UserMediaInfoMuteVideo1: 用户已经停止发布视频流。
UserMediaInfoEnableVideo4: 用户已开启视频功能。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoBufferType

视频数据类型。
枚举值描述
VideoBufferRawData1: 原始数据。
VideoBufferArray2: Array 数据。
VideoBufferTexture3: Texture。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoCodecType

视频编码类型。
枚举值描述
VideoCodecTypeNone0: 无
VideoCodecTypeVp81: VP8
VideoCodecTypeH2642: H.264
VideoCodecTypeH2653: H.265
VideoCodecTypeGeneric6: Generic
VideoCodecTypeGenericH2647: Generic H264
VideoCodecTypeAv112: AV1
VideoCodecTypeVp913: VP9
VideoCodecTypeGenericJpeg20: JPEG
表格内容超出当前宽度,可横向滚动查看更多列。

VideoFrameType

已编码视频帧类型
枚举值描述
VideoFrameTypeBlankFrame0: 空白帧。
VideoFrameTypeKeyFrame3: 关键帧。对于 H.264 编码格式,SDK 把带有 sps 和 pps 信息的 I 帧归类为关键帧。
VideoFrameTypeDeltaFrame4: Delta 帧。对于 H.264 编码格式,SDK 把 P 帧和不带 sps 和 pps 信息的 I 帧都归类为 Delta 帧。
VideoFrameTypeBFrame5: B 帧。
VideoFrameTypeDroppableFrame6: 丢弃帧
VideoFrameTypeUnknown-1: 未知
表格内容超出当前宽度,可横向滚动查看更多列。

VideoOrientation

原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作。
枚举值描述
VideoOrientation00: (默认)顺时针旋转 0 度。
VideoOrientation9090: 顺时针旋转 90 度。
VideoOrientation180180: 顺时针旋转 180 度。
VideoOrientation270270: 顺时针旋转 270 度。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoPixelFormat

像素格式。
枚举值描述
VideoPixelDefault0: 原始视频像素格式。
VideoPixelI4201: I420 格式。
VideoPixelRGBA4: RGBA 格式。
VideoPixelI42216: I422 格式。
VideoTextureID3D11Texture2D17: ID3D11TEXTURE2D 格式。目前支持的类型有 DXGI_FORMAT_B8G8R8A8_UNORM、DXGI_FORMAT_B8G8R8A8_TYPELESS 和 DXGI_FORMAT_NV12。
表格内容超出当前宽度,可横向滚动查看更多列。

注意

SDK 目前不支持 Alpha 通道。传入的 Alpha 值将被丢弃。

VideoSendCcState

拥塞控制模式。
枚举值描述
VideoSendCcEnabled0: 开启拥塞控制。
VideoSendCcDisabled1: 关闭拥塞控制。
表格内容超出当前宽度,可横向滚动查看更多列。

VideoStreamType

视频流类型。
枚举值描述
VideoStreamHigh0: (默认)大流。分辨率和码率较高。
VideoStreamLow1: 小流。分辨率和码率较低。
表格内容超出当前宽度,可横向滚动查看更多列。