数据结构

本文介绍实时音视频Linux SDK C++数据结构。

目录

数据类型

描述

ERROR_CODE

错误码定义。

WARNNING_CODE

警告码定义。

ChannelProfile

频道模式。

PublishMode

推流模式。

PublishAvsyncMode

推流的音画同步模式。

LogLevel

日志级别。

AudioQualityMode

音频质量模式。

AudioSceneMode

音频场景模式。

VideoTrack

视频轨道。

AudioTrack

音频轨道。

VideoProfile

视频分辨率配置。

AliEngineVideoDimensions

视频分辨率。

AliEngineFrameRate

视频帧率。

AliEngineVideoEncoderOrientationMode

视频输出方向。

AliEngineVideoMirrorMode

视频镜像模式。

AliEngineRotationMode

视频旋转角度。

AliEngineVideoEncoderConfiguration

相机流视频编码属性设置。

AliEngineScreenShareEncoderConfiguration

屏幕流编码属性设置。

VideoSource

视频源。

RenderMode

渲染模式。

VideoDataFormat

视频数据格式。

VideoBufferType

视频缓冲区类型。

MemoryType

内存类型。

VideoDataSample

视频数据样本。

SubscribeMode

定义仅用于订阅的枚举。

VideoTrackType

视频轨道类型。

VideoFormat

视频格式。

AudioFormat

音频格式。

VideoFrameType

视频帧类型。

AudioFrameType

音频帧类型。

AudioPcmFrame

音频PCM帧类。

AudioAacFrame

音频AAC帧结构体。

AudioFrame

音频帧结构体。

AudioTranscodingCodec

音频转码编解码器类型。

VideoTranscodingCodec

视频转码编解码器类型。

VideoH264Frame

H264视频帧类。

VideoFrame

视频帧结构体。

AliEnginePublishState

推流状态。

AliEngineSubscribeState

订阅状态。

AliEngineVideoStreamType

视频流类型。

AliEngineMuteLocalAudioMode

静音模式。

AliEngineClientRole

用户角色类型。

JoinChannelConfig

加入频道配置结构体。

AuthInfo

认证信息结构体。

AliEngineDataMsgType

伴奏控制指令模式。

AliEngineDataChannelMsg

伴奏控制消息结构体

详情

  • ERROR_CODE: 错误码定义。

枚举名

描述

ERR_OK

正常。

ERR_JOIN_BAD_APPID

AppId不存在。

ERR_JOIN_INVALID_APPID

AppId已失效。

ERR_JOIN_BAD_CHANNEL

频道不存在。

ERR_JOIN_INVALID_CHANNEL

频道已失效。

ERR_JOIN_BAD_TOKEN

Token不存在。

ERR_JOIN_TIMEOUT

加入频道超时。

ERR_JOIN_BAD_PARAM

加入频道参数错误。

ERR_JOIN_FAILED

加入频道失败。

ERR_JOIN_CONFIG_INVALID

(新增)入会参数无效,如空token。

ERR_LEAVE_UNUSUAL

(新增)异常离会,可能被踢。

ERR_NO_PEOPLE

(审核定制能力)房间无人,可能房间不存在或主播已下播。

ERR_AUDIO_DATA_ERROR

音频数据错误。

ERR_VIDEO_DATA_ERROR

视频数据错误。

ERR_NETWORK_CONNECT_FAIL

媒体通道建立失败。

ERR_NETWORK_RECONNECT_FAIL

媒体通道重连失败。

ERR_NETWORK_DISCONNECT

连接断开。

ERR_NETWORK_TIMEOUT

连接超时。

ERR_PUBLISH_INVALID

推流无效。

ERR_Publish_NOT_JOIN_CHANNEL

未进入频道推流失败。

ERR_PUBLISH_AUDIO_STREAM_FAILED

推送音频流失败。

ERR_PUBLISH_VIDEO_STREAM_FAILED

推送视频流失败。

ERR_PUBLISH_DUAL_STREAM_FAILED

推送小流失败。

ERR_PUBLISH_SCREEN_SHARE_FAILED

推送屏幕共享失败。

ERR_PUBLISH_SCREEN_SHARE_CONFIG

屏幕共享配置错误。

ERR_SUBSCRIBE_INVALID

订阅无效。

ERR_SUBSCRIBE_NOT_JOIN_CHANNEL

未进入频道订阅错误。

ERR_SUBSCRIBE_AUDIO_STREAM_FAILED

订阅音频流失败。

ERR_SUBSCRIBE_VIDEO_STREAM_FAILED

订阅视频流失败。

ERR_SUBSCRIBE_DUAL_STREAM_FAILED

订阅小流失败。

ERR_SUBSCRIBE_SCREEN_SHARE_FAILED

订阅屏幕共享失败。

ERR_SUBSCRIBE_DUAL_AUDIO_STREAM_FAILED

订阅双声道失败。

ERR_SDK_INVALID_STATE

SDK内部状态错误。

ERR_SESSION_REMOVED

session已经被移除。

ERR_INNER

SDK内部错误。

ERR_VIDEO_TRANSFER

视频数据传输错误。

ERR_AUDIO_TRANSFER

音频数据传输错误。

ERR_AUDIO_BUFFER_FULL

音频外部输入时,频率过快。

ERR_FATAL

SDK严重错误。

  • WARNNING_CODE: 警告码定义。

枚举名

描述

WARN_DEFAULT

默认警告。

  • ChannelProfile: 频道模式。

枚举名

描述

ChannelProfileCommunication

通信模式。

ChannelProfileInteractiveLive

直播模式。

ChannelProfileInteractiveWithLowLatencyLive

互动低延迟直播模式。

  • PublishMode: 推流模式。

枚举名

描述

PublishAutomatically

自动推流。

PublishManually

手动推流。

  • PublishAvsyncMode: 推流的音画同步模式。

枚举名

描述

PublishAvsyncNoDelay

SDK内部不做缓存,PushExternalVideoFrame/PushExternalAudioFrame 后立刻发送到网络,调用方保证音画同步。

PublishAvysncWithPts

SDK内部做缓存,根据送入的pts 进行音画对齐和等待。如 只推音频,但是音频是文件形式输入,比如2s的音频数据,可以快速输入到SDK中,SDK会根据pts按需等待,在2s内陆续输入到网络。如 同时输入音视频,但是音视频的获取时间并有一定间隔,SDK内部会根据音频和视频的pts 进行对齐,陆续输入到网络。在join-leave的生命周期内,多次pub、unpub,送入的不同片段的pts需要在相同时间轴上。如 join之后,第一次pub, pts 都从0 开始, 10s后unpub,然后再10s后再进行pub,第二次pub的pts需要从20s开始,不可以再从0开始,否则会导致卡顿。

  • LogLevel: 日志级别。

枚举名

描述

LogLevelInfo

只输出>=LogLevelInfo级别的日志。

LogLevelWarn

只输出>=LogLevelWarn级别的日志。

LogLevelError

只输出>=LogLevelError级别的日志。

LogLevelFatal

只输出>=LogLevelFatal级别的日志。

LogLevelNone

不输出日志。

  • AudioQualityMode: 音频质量模式。

枚举名

描述

LowQualityMode

音频低音质模式,默认8000Hz采样率,单声道,最大编码码率12kbps。

BasicQualityMode

(默认)标准音质模式,默认16000Hz采样率,单声道,最大编码码率24kbps。

HighQualityMode

高音质模式,默认48000Hz采样率,单声道,最大编码码率64kbps。

StereoHighQualityMode

立体声高音质模式,默认48000Hz采样率,双声道,最大编码码率80kbps。

SuperHighQualityMode

超高音质模式,默认48000Hz采样率,单声道,最大编码码率96kbps。

StereoSuperHighQualityMode

立体声超高音质模式,默认48000Hz采样率,双声道,最大编码码率128kbps。

QualityMaxMode

音质模式最大值。

  • AudioSceneMode: 音频场景模式。

枚举名

描述

DefaultMode

默认模式,硬件3a处理。

EducationMode

教育场景,硬件3a处理。

MediaMode

媒体场景,基础软件3a处理。

MusicMode

音乐场景,音乐优化软件3a处理。

ChatroomMode

聊天室模式,硬件3a处理。

KtvMode

KTV模式,音乐优化软件3a处理加Aaudio。

SceneMaxMode

场景模式最大值。

  • VideoTrack: 视频轨道。

枚举名

描述

VideoTrackNo

无视频轨道。

VideoTrackCamera

来自摄像头、文件等的视频。

VideoTrackScreen

来自屏幕共享的视频。

VideoTrackBoth

包括VideoTrackCamera和VideoTrackScreen。

VideoTrackEnd

视频轨道结束标记。

  • AudioTrack: 音频轨道。

枚举名

描述

AudioTrackNo

无音频轨道。

AudioTrackMic

来自麦克风、文件等的音频。

AudioTrackEnd

音频轨道结束标记。

  • VideoProfile: 视频分辨率配置。

枚举名

描述

VideoProfile_Default

让SDK决定。

VideoProfile_180_240P_15

分辨率180x240,帧率15fps。

VideoProfile_180_320P_15

分辨率180x320,帧率15fps。

VideoProfile_180_320P_30

分辨率180x320,帧率30fps。

VideoProfile_240_320P_15

分辨率240x320,帧率15fps。

VideoProfile_360_480P_15

分辨率360x480,帧率15fps。

VideoProfile_360_480P_30

分辨率360x480,帧率30fps。

VideoProfile_360_640P_15

分辨率360x640,帧率15fps。

VideoProfile_360_640P_30

分辨率360x640,帧率30fps。

VideoProfile_480_640P_15

分辨率480x640,帧率15fps。

VideoProfile_480_640P_30

分辨率480x640,帧率30fps。

VideoProfile_720_960P_15

分辨率720x960,帧率15fps。

VideoProfile_720_960P_30

分辨率720x960,帧率30fps。

VideoProfile_720_1280P_15

分辨率720x1280,帧率15fps。

VideoProfile_720_1280P_20

分辨率720x1280,帧率20fps。

VideoProfile_720_1280P_30

分辨率720x1280,帧率30fps。

VideoProfile_1080_1920P_15

分辨率1080x1920,帧率15fps。

VideoProfile_1080_1920P_30

分辨率1080x1920,帧率30fps。

VideoProfile_480_640P_15_1500Kb

分辨率480x640,帧率15fps,码率1500Kbps。

VideoProfile_900_1600P_20

分辨率900x1600,帧率20fps。

VideoProfile_360_640P_15_800Kb

分辨率360x640,帧率15fps,码率800Kbps。

VideoProfile_480_840P_15_500Kb

分辨率480x840,帧率15fps,码率500Kbps。

VideoProfile_480_840P_15_800Kb

分辨率480x840,帧率15fps,码率800Kbps。

VideoProfile_540_960P_15_800Kb

分辨率540x960,帧率15fps,码率800Kbps。

VideoProfile_540_960P_15_1200Kb

分辨率540x960,帧率15fps,码率1200Kbps。

VideoProfile_540_960P_20

分辨率540x960,帧率20fps。

VideoProfile_1080_1920P_20

分辨率1080x1920,帧率20fps。

VideoProfile_240_320P_15_300kb

分辨率240x320,帧率15fps,码率300Kbps。

VideoProfile_240_320P_15_500kb

分辨率240x320,帧率15fps,码率500Kbps。

VideoProfile_90_160P_15

分辨率90x160,帧率15fps。

AliRTCSDK_Video_Profile_Adaptive_Resolution

自适应分辨率。

AliRTCSDK_Video_Profile_Max

视频分辨率配置最大值。

  • AliEngineVideoDimensions: 视频分辨率。

参数

类型

描述

width

int

视频宽度。

height

int

视频高度。

  • AliEngineFrameRate: 视频帧率。

枚举名

描述

AliEngineFrameRateFps5

5 fps。

AliEngineFrameRateFps10

10 fps。

AliEngineFrameRateFps15

15 fps。

AliEngineFrameRateFps20

20 fps。

AliEngineFrameRateFps25

25 fps。

AliEngineFrameRateFps30

30 fps。

  • AliEngineVideoEncoderOrientationMode: 视频输出方向。

枚举名

描述

AliEngineVideoEncoderOrientationModeAdaptive

自适应,推流方向和采集方向一致。

AliEngineVideoEncoderOrientationModeFixedLandscape

风景模式,横屏视频。该模式下SDK推竖屏流,始终以设置的分辨率宽和高中较小的值作为输出视频的宽,较大值作为输出视频的高。

AliEngineVideoEncoderOrientationModeFixedPortrait

肖像模式,竖屏视频。该模式下SDK推横屏流,始终以设置的分辨率宽和高中较大的值作为输出视频的宽,较小值作为输出视频的高。

  • AliEngineVideoMirrorMode: 视频镜像模式。

枚举名

描述

AliEngineVideoMirrorModeDisabled

关闭镜像。

AliEngineVideoMirrorModeEnable

开启镜像。

  • AliEngineRotationMode: 视频旋转角度。

枚举名

描述

AliEngineRotationModeNoChange

沿用之前的旋转角度。

AliEngineRotationMode_0

0度旋转。

AliEngineRotationMode_90

90度旋转。

AliEngineRotationMode_180

180度旋转。

AliEngineRotationMode_270

270度旋转。

  • AliEngineVideoEncoderConfiguration: 相机流视频编码属性设置。

参数

类型

描述

dimensions

AliEngineVideoDimensions

视频分辨率,默认值640x480,最大值1920x1080。

frameRate

AliEngineFrameRate

视频帧率,默认值15, 最大值30。

bitrate

int

视频编码码率(Kbps)。默认值512,设置为0表示由SDK计算合适的编码码率。码率设置根据分辨率和帧率有对应的合理范围,该值设置在合理范围内有效,否则SDK会自动调节码率到有效值。

orientationMode

AliEngineVideoEncoderOrientationMode

视频输出方向,默认自适应。

mirrorMode

AliEngineVideoMirrorMode

推流镜像,默认关闭。

rotationMode

AliEngineRotationMode

推流旋转,默认为0度。

  • AliEngineScreenShareEncoderConfiguration: 屏幕流编码属性设置。

参数

类型

描述

dimensions

AliEngineVideoDimensions

视频分辨率,默认值0x0,最大值3840x2160,默认值表示推流分辨率等于屏幕采集的分辨率。

frameRate

AliEngineFrameRate

视频帧率,默认值5, 最大值30。

bitrate

int

视频编码码率(Kbps),默认值512,设置为0表示由SDK计算合适的编码码率。码率设置根据分辨率和帧率有对应的合理范围,该值设置在合理范围内有效,否则SDK会自动调节码率到有效值。

rotationMode

AliEngineRotationMode

推流旋转,默认为0度,详见AliEngineRotationMode。

  • VideoSource: 视频源。

枚举名

描述

VideoSourceCamera

来自相机的视频源。

VideoSourceScreenShare

来自屏幕共享的视频源。

VideosourceTypeMax

视频源类型最大值。

  • RenderMode: 渲染模式。

枚举名

描述

RenderModeAuto

自动模式。

RenderModeStretch

拉伸平铺模式 ,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频拉伸到推流设置的比例,画面会变形。

RenderModeFill

填充黑边模式,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频上下或者左右填充黑边。

RenderModeCrop

裁剪模式,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频宽或者高进行裁剪,画面内容会丢失。

  • VideoDataFormat: 视频数据格式。

枚举名

描述

VideoDataFormatUnknow

未知格式。

VideoDataFormatBGRA

BGRA格式。

VideoDataFormatI420

I420格式。

VideoDataFormatNV21

NV21格式。

VideoDataFormatNV12

NV12格式。

VideoDataFormatH264

H264格式。

VideoDataFormatRGB24

RGB24格式。

VideoDataFormatBGR24

BGR24格式。

  • VideoBufferType: 视频缓冲区类型。

枚举名

描述

VideoBufferTypeRawData

原始数据。

VideoBufferTypeCVPixelBuffer

CVPixelBuffer类型。

VideoBufferTypeTexture

纹理类型。

  • MemoryType: 内存类型。

枚举名

描述

MemoryTypeStack

栈内存,无需释放。

MemoryTypeHeap

堆内存,需要手动释放。

  • VideoDataSample: 视频数据样本。

参数

类型

描述

format

VideoDataFormat

视频数据格式。

bufferType

VideoBufferType

视频缓冲区类型。

data

unsigned char*

指向视频数据的指针,默认为nullptr。

dataLen

size_t

视频数据的长度。

strideY

int

Y平面的跨度,默认为0。

strideU

int

U平面的跨度,默认为0。

strideV

int

V平面的跨度,默认为0。

height

int

视频高度,默认为0。

width

int

视频宽度,默认为0。

rotation

int

视频旋转角度,默认为0。

timeStamp

long long

时间戳。

memoryType

MemoryType

内存类型,默认为MemoryTypeStack。

  • SubscribeMode: 定义仅用于订阅的枚举。

枚举名

描述

SubscribeAutomatically

自动订阅。

SubscribeManually

手动订阅。

SubscribeAudioAutoAndOnly

自动仅订阅音频。

SubscribeCameraAutoAndOnly

自动仅订阅来自摄像头的视频。

  • VideoTrackType: 视频轨道类型。

枚举名

描述

VideoTrackCameraLarge

来自摄像头的大流视频。

VideoTrackCameraSmall

来自摄像头的小流视频。

VideoTrackCameraSuper

来自摄像头的超清流视频。

VideoTrackScreenshare

屏幕共享视频。

  • VideoFormat: 视频格式。

枚举名

描述

VideoFormatNone

无视频格式。

VideoFormatH264

H264视频格式。

  • AudioFormat: 音频格式。

枚举名

描述

AudioFormatNone

无音频格式。

AudioFormatMixedPcm

混合后的PCM格式。

AudioFormatPcmBeforMixing

混合前的PCM格式。

  • VideoFrameType: 视频帧类型。

枚举名

描述

VideoFrameH264

YUV I420,解码后的图像。

VideoFrameH264Nalu

H264 Nalu,解码前的图像。

  • AudioFrameType: 音频帧类型。

枚举名

描述

AudioFrameRawPcm

原始PCM数据。

AudioFrameAacAdts

AAC ADTS格式数据。

  • AudioPcmFrame: 音频PCM帧类。

参数

类型

描述

frame_ms_

uint64_t

时间戳,以毫秒为单位。

channels_

unsigned int

音频通道数,比如1表示单声道。

sample_bits_

unsigned int

每个样本的位数,例如16位采样深度。

sample_rates_

unsigned int

音频采样率,如8000Hz(8kHz)、16000Hz(16kHz)、32000Hz(32kHz)。

samples_

unsigned int

音频样本数量。

pcmBuf_

const char*

指向PCM数据缓冲区的指针。

pcmBufSize_

unsigned int

PCM数据缓冲区的大小,单位是字节。

  • AudioAacFrame: 音频AAC帧结构体。

参数

类型

描述

frame_ms_

uint64_t

时间戳,以毫秒为单位。

channels_

unsigned int

音频通道数,例如1表示单声道。

sample_rates_

unsigned int

音频采样率,可选值有8000Hz(8kHz)、16000Hz(16kHz)、32000Hz(32kHz)。

aacBuf_

const uint8_t*

指向AAC数据缓冲区的指针。

aacBufSize_

unsigned int

AAC数据缓冲区的大小,单位是字节。

  • AudioFrame: 音频帧结构体。

参数

类型

描述

type

AudioFrameType

音频帧的类型,标识存储的是原始PCM数据还是AAC数据。

frame

union { AudioPcmFrame pcm; AudioAacFrame aac; }

匿名联合体,根据类型存储指向不同音频数据结构的指针。

  • AudioTranscodingCodec: 音频转码编解码器类型。

枚举名

描述

AudioTranscodingCodecPcm

仅转码为PCM格式。

AudioTranscodingCodecAac

仅转码为AAC格式。

AudioTranscodingCodecBothPcmAndAac

同时转码为PCM和AAC格式。

AudioTranscodingCodecMax

音频转码编解码器的最大枚举值,用于枚举范围检查。

  • VideoTranscodingCodec: 视频转码编解码器类型。

枚举名

描述

VideoTranscodingCodecYuv

仅转码为YUV格式。

VideoTranscodingCodecH264

仅转码为H264格式。

VideoTranscodingCodecBothYuvAndH264

同时转码为YUV和H264格式。

VideoTranscodingCodecMax

视频转码编解码器的最大枚举值,用于枚举范围检查。

  • VideoH264Frame: H264视频帧类。

参数

类型

描述

frame_ms_

uint64_t

视频帧的时间戳,单位为毫秒。

frame_num_

unsigned int

视频帧的序号。

buf_

const char*

指向视频帧数据的指针。

bufSize_

unsigned int

视频帧数据的大小,单位是字节。

width

int

视频帧的宽度。

height

int

视频帧的高度。

  • VideoFrame: 视频帧结构体。

参数

类型

描述

track

VideoTrackType

视频帧对应的轨道类型。

type

VideoFrameType

视频帧的类型,例如H264或者H264 NALU。

frame

union { VideoH264Frame *h264; }

匿名联合体,存储指向不同视频帧结构体的指针。

  • AliEnginePublishState: 推流状态。

枚举名

描述

AliEngineStatsPublishIdle

初始状态。

AliEngineStatsNoPublish

未推流。

AliEngineStatsPublishing

推流中。

AliEngineStatsPublished

已推流。

  • AliEngineSubscribeState: 订阅状态。

枚举名

描述

AliEngineStatsSubscribeIdle

初始状态。

AliEngineStatsNoSubscribe

未订阅。

AliEngineStatsSubscribing

订阅中。

AliEngineStatsSubscribed

已订阅。

  • AliEngineVideoStreamType: 视频流类型。

枚举名

描述

AliEngineVideoStreamTypeNone

无,在OnSubscribeStreamTypeChanged回调表示当前未订阅。

AliEngineVideoStreamTypeHigh

高码率,高分辨率流(大流)。

AliEngineVideoStreamTypeLow

低码率,低分辨率流(小流)。

  • AliEngineMuteLocalAudioMode: 静音模式。

枚举名

描述

AliEngineMuteLocalAudioModeDefault

默认模式(静音全部,包括麦克风及外部输入音频)。

AliEngineMuteLocalAudioModeMuteOnlyMic

只静音麦克风。

AliEngineMuteLocalAudioModeMuteAll

静音全部(包括麦克风及外部输入音频)。

  • AliEngineClientRole: 用户角色类型。

枚举名

描述

AliEngineClientRoleInteractive

互动角色。

AliEngineClientRoleLive

观众角色。

  • JoinChannelConfig: 加入频道配置结构体。

参数

类型

描述

channelProfile

AliRTCSdk::Central::ChannelProfile

频道配置模式。

isAudioOnly

bool

是否仅音频模式。

publishMode

AliRTCSdk::Central::PublishMode

推流模式。

subscribeMode

AliRTCSdk::Central::SubscribeMode

订阅模式。

publishAvsyncMode

AliRTCSdk::Central::PublishAvsyncMode

推流音视频同步模式。

subscribeVideoFormat

AliRTCSdk::Central::VideoFormat

订阅的视频格式。

subscribeAudioFormat

AliRTCSdk::Central::AudioFormat

订阅的音频格式。

  • AuthInfo: 认证信息结构体。

参数

类型

描述

channel

const char *

频道名称。

userid

const char *

用户ID。

username

const char *

用户名。

appid

const char *

应用ID。

nonce

const char *

随机数。

token

const char *

认证Token。

gslb

const char **

Gslb地址列表。

agent

const char **

Agent地址列表。

gslb_count

int

Gslb地址数量。

agent_count

int

Agent地址数量。

timestamp

long long

时间戳。

  • AliEngineDataMsgType: 伴奏控制指令模式。

枚举名

描述

AliEngineDataChannelNone

无。

AliEngineDataChannelProgress

进度。

AliEngineDataChannelCustom

自定义。

  • AliEngineDataChannelMsg: 伴奏控制消息结构体。

参数

类型

描述

type

AliEngineDataMsgType

消息类型。

networkTime

long long

网络时间。

progress

int

进度。

data

void*

数据。

dataLen

int

数据长度。