AliRTCLinuxEngine接口

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍实时音视频Linux SDK C++ engine接口说明。

目录

API

功能描述

CreateAliRTCEngine

获取一个AliRTCEngineInterface实例。

Release

销毁AliRTCEngineInterface实例。

GetEventHandler

获取事件回调句柄。

JoinChannel[1/2]

加入频道。

JoinChannel[2/2]

加入频道。

LeaveChannel

离开频道。

IsLocalVideoStreamPublished

查询是否允许推送camera track。

IsLocalScreenPublishEnabled

查询是否允许推送screen track。

IsLocalAudioStreamPublished

查询是否允许推送audio track。

IsDualStreamPublished

查询是否允许推送simulcast (camera track)。

SetExternalVideoSource

启用外部视频输入源。

PushExternalVideoFrame

输入外部输视频, 暂不支持2k及以上的视频输入。

SetExternalAudioSource

设置是否启用外部音频输入推流。

PushExternalAudioFrameRawData

输入外部音频数据推流。

SetAudioProfile

设置音频Profile。

SetExternalAudioPublishVolume

设置外部输入音频推流混音音量。

GetExternalAudioPublishVolume

获取外部输入音频推流混音音量。

SendMediaExtensionMsg

发送媒体扩展信息(SEI), 最大长度为4*1024字节,用于业务的少量数据传输。

PublishLocalDualStream

是否允许推送次要视频流。

PublishLocalVideoStream

是否推送本地视频(摄像头)流。

PublishLocalAudioStream

是否推送本地音频流。

PublishScreenShareStream

开始推送屏幕流。

SubscribeRemoteAudioStream

停止/恢复订阅特定远端用户的音频流, 用于会中调用, 会前调用无效。

SubscribeRemoteVideoStream

停止/恢复订阅远端用户的视频流, 用于会中调用, 会前调用无效。

SetVideoEncoderConfiguration

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

SetScreenShareEncoderConfiguration

设置屏幕流视频编码属性。

SetRemoteVideoStreamType

设置订阅相机流格式,大流或小流

MuteLocalCamera

停止或恢复本地视频数据发送。

MuteLocalMic

停止或恢复本地音频数据发送。

SetClientRole

设置用户角色

SetRemoteDefaultVideoStreamType

设置默认订阅视频流类型。

LeaveOnceNoStreamer

以观众模式入会后,若房间内的所有主播均下播,就立即回调OnError,错误码ERR_NO_PEOPLE。

SetPeriodForCheckPeople

入会后等待一段时间,若始终无人上线则回调OnError,错误码ERR_NO_PEOPLE。

SetParameter

JSON格式字符串进行自定义配置,如打开关闭dataChannel。

GenerateToken

在本地生成joinchannel所需要的token,绕过appserver完成鉴权。

SendDataChannelMessage

通过dataChannel发送数据。

SetLogLevel

设置日志等级。

OnError

如果engine出现error,通过这个消息通知业务层。

OnWarning

如果engine出现warning,通过这个消息通知业务层。

OnJoinChannelResult

加入频道结果。

OnDataChannelMsg

获得dataChannel远端数据。

OnLeaveChannelResult

离开频道结果

OnRemoteUserOnLineNotify

远端用户(通信模式)/(互动模式,主播角色)加入频道回调。

OnRemoteUserOffLineNotify

远端用户(通信模式)/(互动模式,主播角色)离开频道回调。

OnAudioSubscribeStateChanged

音频订阅情况变更回调。

OnVideoSubscribeStateChanged

相机流订阅情况变更回调。

OnSubscribeStreamTypeChanged

大小订阅情况变更回调。

OnScreenShareSubscribeStateChanged

屏幕分享流订阅情况变更回调。

OnScreenSharePublishStateChanged

屏幕分享推流变更回调。

OnDualStreamPublishStateChanged

次要流推流变更回调。

OnVideoPublishStateChanged

视频推流变更回调。

OnAudioPublishStateChanged

音频推流变更回调。

OnSubscribeAudioFrame

混音前每一路远端用户的音频数据回调。

OnSubscribeMixAudioFrame

本地订阅音频数据回调。

OnRemoteVideoSample

订阅的远端视频数据回调。

OnRemoteVideoEncodedSample

订阅的远端视频,解码前数据回调。

OnMediaExtensionMsgReceived

收到媒体扩展信息回调。

OnSnapshotComplete

截图回调。

OnPlaybackAudioFrameBeforeMixing

混音前每一路远端用户的音频数据回调(Deprecated,功能已经被OnSubscribeAudioFrame替代)。

OnUpdateRoleNotify

当用户角色发生变化时通知。

OnSubscribeAudioAac

音频存档定制能力,分流音频转码AAC输出。

OnSubscribeMixedAudioAac

音频存档定制能力,合流音频转码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

预定义的编码属性,详见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) {}

该回调在以下场景会被触发:

通信模式

  • 远端用户加入频道会触发该回调,如果当前用户在加入频道前已有其他用户在频道中,当前用户加入频道后也会收到已加入频道用户的回调。

互动模式

  • 远端主播角色用户加入频道会触发该回调,如果当前用户在加入频道前已有其他主播在频道中,当前用户加入频道后也会收到已加入频道主播的回调。

  • 远端观众角色调用 SetClientRole: 设置用户角色切换为主播角色 AliEngineClientRoleInteractive,会触发该回调。

互动模式下回调行为: 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: 音频帧结构体。