本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍实时音视频Linux SDK C++ engine接口说明。
目录
API | 功能描述 |
获取一个AliRTCEngineInterface实例。 | |
销毁AliRTCEngineInterface实例。 | |
获取事件回调句柄。 | |
加入频道。 | |
加入频道。 | |
离开频道。 | |
查询是否允许推送camera track。 | |
查询是否允许推送screen track。 | |
查询是否允许推送audio track。 | |
查询是否允许推送simulcast (camera track)。 | |
启用外部视频输入源。 | |
输入外部输视频, 暂不支持2k及以上的视频输入。 | |
设置是否启用外部音频输入推流。 | |
输入外部音频数据推流。 | |
设置音频Profile。 | |
设置外部输入音频推流混音音量。 | |
获取外部输入音频推流混音音量。 | |
发送媒体扩展信息(SEI), 最大长度为4*1024字节,用于业务的少量数据传输。 | |
是否允许推送次要视频流。 | |
是否推送本地视频(摄像头)流。 | |
是否推送本地音频流。 | |
开始推送屏幕流。 | |
停止/恢复订阅特定远端用户的音频流, 用于会中调用, 会前调用无效。 | |
停止/恢复订阅远端用户的视频流, 用于会中调用, 会前调用无效。 | |
设置相机流视频编码属性。 | |
设置屏幕流视频编码属性。 | |
设置订阅相机流格式,大流或小流 | |
停止或恢复本地视频数据发送。 | |
停止或恢复本地音频数据发送。 | |
设置用户角色 | |
设置默认订阅视频流类型。 | |
以观众模式入会后,若房间内的所有主播均下播,就立即回调OnError,错误码ERR_NO_PEOPLE。 | |
入会后等待一段时间,若始终无人上线则回调OnError,错误码ERR_NO_PEOPLE。 | |
JSON格式字符串进行自定义配置,如打开关闭dataChannel。 | |
在本地生成joinchannel所需要的token,绕过appserver完成鉴权。 | |
通过dataChannel发送数据。 | |
设置日志等级。 | |
如果engine出现error,通过这个消息通知业务层。 | |
如果engine出现warning,通过这个消息通知业务层。 | |
加入频道结果。 | |
获得dataChannel远端数据。 | |
离开频道结果 | |
远端用户(通信模式)/(互动模式,主播角色)加入频道回调。 | |
远端用户(通信模式)/(互动模式,主播角色)离开频道回调。 | |
音频订阅情况变更回调。 | |
相机流订阅情况变更回调。 | |
大小订阅情况变更回调。 | |
屏幕分享流订阅情况变更回调。 | |
屏幕分享推流变更回调。 | |
次要流推流变更回调。 | |
视频推流变更回调。 | |
音频推流变更回调。 | |
混音前每一路远端用户的音频数据回调。 | |
本地订阅音频数据回调。 | |
订阅的远端视频数据回调。 | |
订阅的远端视频,解码前数据回调。 | |
收到媒体扩展信息回调。 | |
截图回调。 | |
混音前每一路远端用户的音频数据回调(Deprecated,功能已经被OnSubscribeAudioFrame替代)。 | |
当用户角色发生变化时通知。 | |
音频存档定制能力,分流音频转码AAC输出。 | |
音频存档定制能力,合流音频转码AAC输出。 |
接口详情
CreateAliRTCEngine: 获取一个AliRTCEngineInterface实例。
AliRTCEngineInterface * CreateAliRTCEngine(EngineEventHandlerInterface * eventHandler, int lowPort, int highPort, const char * logPath, const char * coreServicePath, bool h5mode=false, const char * extra="");
参数说明
名称 | 类型 | 描述 |
eventHandler | EngineEventHandlerInterface * | 回调对象,负责处理回调逻辑。 |
lowPort | int | 端口号下限,lowPort~highPort之间的端口将被随机选择用于进程间通信 |
highPort | int | 端口号上限 |
logPath | const char * | SDK运行过程中,日志文件的保存路径 |
coreServicePath | const char * | AliRtcCoreService的实际路径 |
h5mode | bool | h5兼容模式,一般false即可 |
extra | const char * | 对SDK进行额外配置时传入的JSON格式字符串 |
返回说明 AliRTCEngineInterface实例。
Release: 销毁AliRTCEngineInterface实例。
virtual void Release() = 0;
GetEventHandler: 获取事件回调句柄。
virtual EngineEventHandlerInterface * GetEventHandler() = 0;
返回说明 事件回调句柄。
JoinChannel[1/2]: 加入频道。
virtual int JoinChannel(const AuthInfo &authInfo, const JoinChannelConfig &config) = 0;
详见Token鉴权。
参数说明
名称 | 类型 | 描述 |
authInfo | AuthInfo | 认证信息,从App Server获取。 |
userName | const JoinChannelConfig | joinChannel时的设置项 |
返回说明 0表示方法调用成功,非0表示方法调用失败。
该接口是异步接口,是否成功加入频道,需要通过OnJoinChannelResult: 加入频道结果。回调判断。
JoinChannel[2/2]: 加入频道。
virtual int JoinChannel(const char *token, const char *channelId, const char *userId, const char *userName, const JoinChannelConfig &config) = 0;
详见Token鉴权。
参数说明
参数 | 类型 | 描述 |
token | const char * | 单参数入会的鉴权信息。 |
channelId | const char * | 入会频道,必须和产生Token的值一样。 |
userId | const char * | 入会的userid,必须和产生token的值一样。 |
userName | const char * | 用户的显示名称(不是用户ID)。 |
config | JoinChannelConfig | joinChannel时的设置项 |
返回说明 0表示方法调用成功,非0表示方法调用失败。
该接口是异步接口,是否成功加入频道,需要通过OnJoinChannelResult: 加入频道结果。回调判断。
LeaveChannel: 离开频道。
virtual int LeaveChannel() = 0;
返回说明 0表示方法调用成功,其他表示方法调用失败。
IsLocalVideoStreamPublished: 查询是否允许推送camera track。
virtual bool IsLocalVideoStreamPublished() = 0;
返回说明 true表示允许,false表示禁止。
IsLocalScreenPublishEnabled: 查询是否允许推送screen track。
virtual bool IsLocalScreenPublishEnabled() = 0;
返回说明 true表示允许,false表示禁止。
IsLocalAudioStreamPublished: 查询是否允许推送audio track。
virtual bool IsLocalAudioStreamPublished() = 0;
返回说明 true表示允许,false表示禁止。
IsDualStreamPublished: 查询是否允许推送simulcast (camera track)。
virtual bool IsDualStreamPublished() = 0;
返回说明 true表示允许,false表示禁止。
SetExternalVideoSource: 启用外部视频输入源。
virtual int SetExternalVideoSource(bool enable, VideoSource sourceType, RenderMode renderMode = RenderModeFill) = 0;
启用后使用PushExternalVideoFrame: 输入外部输视频, 暂不支持2k及以上的视频输入。接口输入视频数据。
参数说明
名称 | 类型 | 描述 |
enable | bool | true表示开启,false表示关闭。 |
sourceType | VideoSource | 流类型。 |
renderMode | RenderMode | 渲染模式。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PushExternalVideoFrame: 输入外部输视频, 暂不支持2k及以上的视频输入。
virtual int PushExternalVideoFrame(VideoDataSample *frame, VideoSource sourceType) = 0;
参数说明
名称 | 类型 | 描述 |
frame | VideoDataSample * | 帧数据。 |
sourceType | VideoSource | 流类型,目前输入视频类型只支持I420。 |
返回说明 0表示方法调用成功,其他表示方法调用失败,返回值为ERR_AUDIO_BUFFER_FULL时,可以调整控制发送速率。
SetExternalAudioSource: 设置是否启用外部音频输入推流。
virtual int SetExternalAudioSource(bool enable, unsigned int sampleRate, unsigned int channelsPerFrame) = 0;
参数说明
名称 | 类型 | 描述 |
enable | bool | true 开启,false 关闭。 |
sampleRate | unsigned int | 采样率 16k 48k...。 |
channelsPerFrame | unsigned int | 通道数 1 2...。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PushExternalAudioFrameRawData: 输入外部音频数据推流。
virtual int PushExternalAudioFrameRawData(const void* audioSamples, unsigned int sampleLength, long long timestamp) = 0;
参数说明
名称 | 类型 | 描述 |
audioSamples | const void* | 音频数据。 |
sampleLength | unsigned int | 音频数据长度。 |
timestamp | long long | 时间戳。 |
返回说明 0表示方法调用成功,其他表示方法调用失败,返回值为ERR_AUDIO_BUFFER_FULL时,需要在间隔投递数据时间长度后再次重试投。
SetAudioProfile: 设置音频Profile。
virtual int SetAudioProfile(AudioQualityMode audioProfile, AudioSceneMode audioScene) = 0;
参数说明
名称 | 类型 | 描述 |
audioProfile | AudioQualityMode | 音频采集或编码模式参数。 |
audioScene | AudioSceneMode | 音频场景模式参数。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetExternalAudioPublishVolume: 设置外部输入音频推流混音音量。
virtual int SetExternalAudioPublishVolume(int volume) = 0;
参数说明
名称 | 类型 | 描述 |
volume | int | 音量 0-100。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
GetExternalAudioPublishVolume: 获取外部输入音频推流混音音量。
virtual int GetExternalAudioPublishVolume() = 0;
返回说明 音量。
SendMediaExtensionMsg: 发送媒体扩展信息(SEI), 最大长度为4*1024字节,用于业务的少量数据传输。
virtual int SendMediaExtensionMsg(const char* message, size_t length, int repeatCount, uint32_t delay, bool isKeyFrame) = 0;
参数说明
名称 | 类型 | 描述 |
message | const char* | 扩展信息内容,可以传递4K Bytes数据。 |
length | size_t | 扩展信息长度,单位:字节。 |
repeatCount | int | 重复次数,用于防止网络丢包导致的消息丢失。 |
delay | uint32_t | 延迟多久发出去,单位:毫秒。 |
isKeyFrame | bool | 是否只在关键帧上增加SEI。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PublishLocalDualStream: 是否允许推送次要视频流。
virtual int PublishLocalDualStream(bool enabled) = 0;
次要视频流只在推送视频流的前提下才会推送,设置推送次要视频流时,请确认已通过 PublishLocalVideoStream: 是否推送本地视频(摄像头)流。 方法开启视频流推送。 SDK默认设置不推送次要视频流,在加入频道前也可以调用此接口修改默认值,并在推送视频流时生效。
参数说明
名称 | 类型 | 描述 |
enabled | bool | 是否开启/关闭次要视频流推送; true:开启次要视频流推送,false:关闭次要视频流推送。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PublishLocalVideoStream: 是否推送本地视频(摄像头)流。
virtual int PublishLocalVideoStream(bool enabled) = 0;
SDK默认设置推送视频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效。
参数说明
名称 | 类型 | 描述 |
enabled | bool | 是否开启/关闭本地视频流推送; true:开启视频流推送,false:关闭视频流推送。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PublishLocalAudioStream: 是否推送本地音频流。
virtual int PublishLocalAudioStream(bool enabled) = 0;
SDK默认设置推送音频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效
参数说明
名称 | 类型 | 描述 |
enabled | bool | 是否开启/关闭本地音频流推送; true:开启音频流推送,false:关闭音频流推送。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
PublishScreenShareStream: 开始推送屏幕流。
virtual int PublishScreenShareStream(bool enabled) = 0;
参数说明
名称 | 类型 | 描述 |
enabled | bool | 是否开启/关闭推送屏幕流; true:开启推送,false:关闭推送。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SubscribeRemoteAudioStream: 停止/恢复订阅特定远端用户的音频流, 用于会中调用, 会前调用无效。
virtual int SubscribeRemoteAudioStream(const char* uid, bool sub) = 0;
参数说明
名称 | 类型 | 描述 |
uid | const char* | 用户ID,从App server分配的唯一标示符。 |
sub | bool | 是否订阅远端用户的音频流;true:订阅指定用户的音频流,false:停止订阅指定用户的音频流 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SubscribeRemoteVideoStream: 停止/恢复订阅远端用户的视频流, 用于会中调用, 会前调用无效。
virtual int SubscribeRemoteVideoStream(const char* uid, VideoTrack videoTrack, bool sub) = 0;
参数说明
名称 | 类型 | 描述 |
uid | const char* | 用户ID,从App server分配的唯一标示符。 |
videoTrack | VideoTrack | 视频流类型。- AliEngineVideoTrackNo:无效参数,设置不会有任何效果。- AliEngineVideoTrackCamera:相机流。- AliEngineVideoTrackScreen:屏幕共享流。- AliEngineVideoTrackBoth:相机流和屏幕共享流。 |
sub | bool | 是否订阅远端用户的音频流;true:订阅指定用户的音频流,false:停止订阅指定用户的音频流 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetVideoEncoderConfiguration: 设置相机流视频编码属性。
virtual void SetVideoEncoderConfiguration(const AliEngineVideoEncoderConfiguration& config) = 0;
该方法用于设置相机流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等。所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节。 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次相机流视频编码属性,建议在入会前调用。
参数说明
名称 | 类型 | 描述 |
config | AliEngineVideoEncoderConfiguration |
SetScreenShareEncoderConfiguration: 设置屏幕流视频编码属性。
virtual int SetScreenShareEncoderConfiguration(const AliEngineScreenShareEncoderConfiguration& config) = 0;
该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等。所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节。 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用。
参数说明
名称 | 类型 | 描述 |
config | const AliEngineScreenShareEncoderConfiguration | 预定义的屏幕共享编码属性,详见AliEngineScreenShareEncoderConfiguration: 屏幕流编码属性设置。 |
SetRemoteVideoStreamType: 设置订阅相机流格式,大流或小流
virtual int SetRemoteVideoStreamType(const char* uid, AliEngineVideoStreamType streamType) = 0;
推流端当前默认不推送小流,只有发送端调用了 PublishLocalDualStream(true) 打开双流模式,接收端才可以选择订阅大流还是小流,否则订阅的只能是大流。
参数说明
名称 | 类型 | 描述 |
uid | const char* | userId,从App server分配的唯一标示符 |
streamType | AliEngineVideoStreamType | 流类型。- AliEngineVideoStreamTypeNone:无效参数,设置不会有任何效果。- AliEngineVideoStreamTypeHigh:大流。- AliEngineVideoStreamTypeLow:小流。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
MuteLocalCamera: 停止或恢复本地视频数据发送。
virtual int MuteLocalCamera(bool mute) = 0;
参数说明
名称 | 类型 | 描述 |
mute | bool | 表明是否停止或恢复。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
MuteLocalMic: 停止或恢复本地音频数据发送。
virtual int MuteLocalMic(bool mute) = 0;
参数说明
名称 | 类型 | 描述 |
mute | bool | 表明是否停止或恢复外部文件推送。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetClientRole: 设置用户角色
virtual int SetClientRole(const AliEngineClientRole clientRole) = 0;
只可以在频道模式为AliRtcChannelProfileCommunication下调用,入会前/会议中均可设置,设置成功会收到OnUpdateRoleNotify: 当用户角色发生变化时通知。。 从Interactive转换为Live角色需要先停止推流,否则返回失败。 频道模式为AliRtcChannelProfileInteractiveLive模式时,用户角色默认为AliRtcClientRoleLive。
参数说明
名称 | 类型 | 描述 |
clientRole | AliEngineClientRole | 用户角色类型。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetRemoteDefaultVideoStreamType: 设置默认订阅视频流类型。
virtual int SetRemoteDefaultVideoStreamType(const AliEngineVideoStreamType streamType) = 0;
参数说明
名称 | 类型 | 描述 |
streamType | const AliEngineVideoStreamType | 流类型,大流或小流。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
LeaveOnceNoStreamer: 以观众模式入会后,若房间内的所有主播均下播,就立即回调OnError,错误码ERR_NO_PEOPLE。
virtual int LeaveOnceNoStreamer(bool enable) = 0;
此功能为审核场景定制能力。
参数说明
名称 | 类型 | 描述 |
enable | bool | 是否开启此功能,true开启,false关闭。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetPeriodForCheckPeople: 入会后等待一段时间,若始终无人上线则回调OnError,错误码ERR_NO_PEOPLE。
virtual int SetPeriodForCheckPeople(int seconds) = 0;
参数说明
名称 | 类型 | 描述 |
seconds | int | seconds 入会后等待的秒数,若为0(或小于0)表示关闭入会检查功能。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetParameter: JSON格式字符串进行自定义配置,如打开关闭dataChannel。
virtual int SetParameter(const char* params) = 0;
参数说明
名称 | 类型 | 描述 |
params | const char* | 自定义配置信息。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
GenerateToken: 在本地生成joinchannel所需要的token,绕过appserver完成鉴权。
virtual void GenerateToken(AuthInfo& authInfo, const char* appkey) {}
方法内根据自动判断生成何种类型token,若authInfo.token长度小于64,生成多参数入会token,若等于64,则生成单参数入会token。
参数说明
名称 | 类型 | 描述 |
authInfo | AuthInfo | 自定义配置信息,在计算token前需要填充好appid、nonce、timestamp。 |
appkey | const char* | 与appid相对应,计算token所需要的key。 |
SendDataChannelMessage: 通过dataChannel发送数据。
virtual int SendDataChannelMessage(AliEngineDataChannelMsg ctrlMsg) = 0;
参数说明
名称 | 类型 | 描述 |
ctrlMsg | AliRtcDataChannelMsg | 包含待发送数据和控制指令。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
SetLogLevel: 设置日志等级。
int SetLogLevel(const LogLevel logLevel, bool upload);
参数说明
名称 | 类型 | 描述 |
logLevel | LogLevel | 日志级别,详见LogLevel。 |
upload | bool | 日志是否上传。 |
返回说明 0表示方法调用成功,其他表示方法调用失败。
OnError: 如果engine出现error,通过这个消息通知业务层。
virtual void OnError(ERROR_CODE error_code) {}
参数说明
名称 | 类型 | 描述 |
error_code | ERROR_CODE | 错误类型。 |
OnWarning: 如果engine出现warning,通过这个消息通知业务层。
virtual void OnWarning(WARNNING_CODE warning_code) {}
参数说明
名称 | 类型 | 描述 |
warning_code | WARNNING_CODE | 警告类型。 |
OnJoinChannelResult: 加入频道结果。
virtual void OnJoinChannelResult(int result, const char *channel, const char *userId) {
fprintf(stdout, "[Client] On join channel result: %d\n", result);
}
当应用调用 JoinChannel方法时,该回调表示成功/失败加入频道。
参数说明
名称 | 类型 | 描述 |
result | int | 加入频道结果,成功返回0,失败返回错误码。 |
channel | const char * | 入会频道。 |
userId | const char * | 用户id。 |
OnDataChannelMsg: 获得dataChannel远端数据。
virtual void OnDataChannelMsg(const char* uid, AliEngineDataChannelMsg& msg) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
msg | AliEngineDataChannelMsg | 远端传来的消息。 |
OnLeaveChannelResult: 离开频道结果
virtual void OnLeaveChannelResult(int result) {}
应用调用 LeaveChannel: 离开频道。方法时,该回调表示成功/失败离开频道,回调将会返回离会的result,如果 LeaveChannel: 离开频道。 后直接Release: 销毁AliRTCEngineInterface实例。SDK,将不会收到此回调。
参数说明
名称 | 类型 | 描述 |
result | int | 离开频道结果,成功返回0,失败返回错误码。 |
OnRemoteUserOnLineNotify: 远端用户(通信模式)/(互动模式,主播角色)加入频道回调。
virtual void OnRemoteUserOnLineNotify(const char * uid) {}
该回调在以下场景会被触发:
通信模式 |
|
互动模式 |
|
互动模式下回调行为: 1. 主播间可以互相收到加入频道回调。 2. 观众可以收到主播加入频道回调。 3. 主播无法收到观众加入频道回调。
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
OnRemoteUserOffLineNotify: 远端用户(通信模式)/(互动模式,主播角色)离开频道回调。
virtual void OnRemoteUserOffLineNotify(const char * uid) {}
该回调在以下场景会被触发。
通信模式 | 远端用户离开频道会触发该回调。 |
互动模式 |
|
通信模式和互动模式主播角色情况下,当长时间收不到远端用户数据,超时掉线时,会触发该回调。
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
OnAudioSubscribeStateChanged: 音频订阅情况变更回调。
virtual void OnAudioSubscribeStateChanged(const char *uid, AliEngineSubscribeState oldState, AliEngineSubscribeState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
oldState | AliEngineSubscribeState | 之前的订阅状态,详见 AliEngineSubscribeState: 订阅状态。 |
newState | AliEngineSubscribeState | 当前的订阅状态,详见 AliEngineSubscribeState: 订阅状态。 |
elapseSinceLastState | int | 两次状态变更时间间隔(毫秒)。 |
channel | const char * | 当前频道id。 |
OnVideoSubscribeStateChanged: 相机流订阅情况变更回调。
virtual void OnVideoSubscribeStateChanged(const char *uid, AliEngineSubscribeState oldState, AliEngineSubscribeState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
oldState | AliEngineSubscribeState | 之前的订阅状态,详见AliEngineSubscribeState: 订阅状态。 |
newState | AliEngineSubscribeState | 当前的订阅状态,详见AliEngineSubscribeState: 订阅状态。 |
elapseSinceLastState | int | 两次状态变更时间间隔(毫秒)。 |
channel | const char * | 当前频道id。 |
OnSubscribeStreamTypeChanged: 大小订阅情况变更回调。
virtual void OnSubscribeStreamTypeChanged(const char *uid, AliEngineVideoStreamType oldStreamType, AliEngineVideoStreamType newStreamType, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
oldStreamType | AliEngineVideoStreamType | 之前的订阅的大小流类型,详见 AliEngineVideoStreamType: 视频流类型。 |
newStreamType | AliEngineVideoStreamType | 当前的订阅的大小流类型,详见 AliEngineVideoStreamType: 视频流类型。 |
elapseSinceLastState | int | 大小流类型变更时间间隔(毫秒)。 |
channel | const char * | 当前频道id。 |
OnScreenShareSubscribeStateChanged: 屏幕分享流订阅情况变更回调。
virtual void OnScreenShareSubscribeStateChanged(const char *uid, AliEngineSubscribeState oldState, AliEngineSubscribeState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
oldState | AliEngineSubscribeState | 之前的订阅状态,详见 AliEngineSubscribeState: 订阅状态。 |
newState | AliEngineSubscribeState | 当前的订阅状态,详见AliEngineSubscribeState: 订阅状态。 |
elapseSinceLastState | int | 两次状态变更时间间隔(毫秒)。 |
channel | const char * | 当前频道id。 |
OnScreenSharePublishStateChanged: 屏幕分享推流变更回调。
virtual void OnScreenSharePublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
oldState | AliEngineSubscribeState | 之前的推流状态。 |
newState | AliEngineSubscribeState | 当前的推流状态。 |
elapseSinceLastState | int | 状态变更时间间隔。 |
channel | const char * | 当前频道id。 |
OnDualStreamPublishStateChanged: 次要流推流变更回调。
virtual void OnDualStreamPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
oldState | AliEngineSubscribeState | 之前的推流状态。 |
newState | AliEngineSubscribeState | 当前的推流状态。 |
elapseSinceLastState | int | 状态变更时间间隔。 |
channel | const char * | 当前频道id。 |
OnVideoPublishStateChanged: 视频推流变更回调。
virtual void OnVideoPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
oldState | AliEngineSubscribeState | 之前的推流状态。 |
newState | AliEngineSubscribeState | 当前的推流状态。 |
elapseSinceLastState | int | 状态变更时间间隔。 |
channel | const char * | 当前频道id。 |
OnAudioPublishStateChanged: 音频推流变更回调。
virtual void OnAudioPublishStateChanged(AliEnginePublishState oldState, AliEnginePublishState newState, int elapseSinceLastState, const char *channel) {}
参数说明
名称 | 类型 | 描述 |
oldState | AliEngineSubscribeState | 之前的推流状态。 |
newState | AliEngineSubscribeState | 当前的推流状态。 |
elapseSinceLastState | int | 状态变更时间间隔。 |
channel | const char * | 当前频道id。 |
OnSubscribeAudioFrame: 混音前每一路远端用户的音频数据回调。
virtual void OnSubscribeAudioFrame(const char* uid, const AudioFrame * frame) {}
来自远端单个用户的音频数据,对应AliRTCSdk::Linux::AudioFormatPcmBeforMixing。
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
frame | const AudioFrame * | 音频数据,详见AudioFrame: 音频帧结构体。 |
OnSubscribeMixAudioFrame: 本地订阅音频数据回调。
virtual void OnSubscribeMixAudioFrame(const AudioFrame * frame) {}
远端所有用户混音后待播放的音频数据,对应AudioFormatMixedPcm。
参数说明
名称 | 类型 | 描述 |
frame | const AudioFrame * | 音频数据,详见AudioFrame: 音频帧结构体。 |
OnRemoteVideoSample: 订阅的远端视频数据回调。
virtual void OnRemoteVideoSample(const char* uid, const VideoFrame * frame) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
frame | const VideoFrame * | 视频裸数据。 |
OnRemoteVideoEncodedSample: 订阅的远端视频,解码前数据回调。
virtual void OnRemoteVideoEncodedSample(const char* uid, const VideoFrame * frame) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
frame | const VideoFrame * | 视频解码前数据。 |
OnMediaExtensionMsgReceived: 收到媒体扩展信息回调。
virtual void OnMediaExtensionMsgReceived(const char* userid, const char* message, size_t size) {}
当一端通过SendMediaExtensionMsg: 发送媒体扩展信息(SEI), 最大长度为4*1024字节,用于业务的少量数据传输。发送信息后,其他端通过该回调接收数据。
参数说明
名称 | 类型 | 描述 |
userid | const char * | 发送用户userId。 |
message | const char * | 扩展信息内容。 |
size | size_t | 扩展信息长度。 |
OnSnapshotComplete: 截图回调。
virtual void OnSnapshotComplete(const char* userId, VideoTrack videoSource, void* buffer, int width, int height, bool success) {}
该接口用于截图回调。
参数说明
名称 | 类型 | 描述 |
userid | const char * | 用户id。 |
videoTrack | VideoTrack | 截图视频track,参考VideoTrack: 视频轨道。 |
buffer | void * | 成功返回截图数据,失败为NULL,buffer数据格式RGBA。 |
width | int | 截图宽度。 |
height | int | 截图高度。 |
success | bool | 截图是否成功。 |
OnPlaybackAudioFrameBeforeMixing: 混音前每一路远端用户的音频数据回调。
方法已被Deprecated,功能已经被OnSubscribeAudioFrame: 混音前每一路远端用户的音频数据回调。替代
virtual void OnPlaybackAudioFrameBeforeMixing(const char *uid, AudioFrame *frame) {}
混音前每一路远端用户的音频数据,AudioFormat: 音频格式。订阅类型为 AudioFormatPcmBeforMixing 时触发此回调。
参数说明
名称 | 类型 | 描述 |
userid | const char * | 远端用户ID。 |
frame | AudioFrame * | 音频数据,详见AudioFrame: 音频帧结构体。 |
OnUpdateRoleNotify: 当用户角色发生变化时通知。
virtual void OnUpdateRoleNotify(const AliEngineClientRole oldRole, const AliEngineClientRole newRole) {}
调用SetClientRole: 设置用户角色方法切换角色成功时触发此回调。
参数说明
名称 | 类型 | 描述 |
oldRole | const AliEngineClientRole | 变化前角色类型,参考AliEngineClientRole: 用户角色类型。 |
newRole | const AliEngineClientRole | 变化后角色类型,参考AliEngineClientRole: 用户角色类型。 |
OnSubscribeAudioAac: 音频存档定制能力,分流音频转码AAC输出。
virtual void OnSubscribeAudioAac(const char* uid, const AudioFrame * frame) {}
参数说明
名称 | 类型 | 描述 |
uid | const char * | 用户id。 |
frame | const AudioFrame * | 音频数据,详见AudioFrame: 音频帧结构体。 |
OnSubscribeMixedAudioAac: 音频存档定制能力,合流音频转码AAC输出。
virtual void OnSubscribeMixedAudioAac(const AudioFrame * frame) {}
参数说明
名称 | 类型 | 描述 |
frame | const AudioFrame * | 音频数据,详见AudioFrame: 音频帧结构体。 |