通过阅读本文,您可以了解到Linux SDK(C++)的AliRtcEngine接口详情。
目录
基础接口
API | 描述 | 支持的最低版本 |
---|---|---|
CreateAliRTCEngine | 创建AliRTCEngine实例。 | 1.18.1 |
Release | 释放AliRTCEngine实例。 | 1.18.1 |
GetEventHandler | 获取事件回调句柄。 | 1.18.1 |
频道相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
JoinChannel | 加入频道。 | 1.18.1 |
LeaveChannel | 离开频道。 | 1.18.1 |
发布相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
SetVideoProfile | 设置视频流推流参数。 | 1.18.1 |
GetVideoProfile | 获取视频流推流参数。 | 1.18.1 |
ConfigLocalCameraPublish | 设置是否允许推送相机流。 | 1.18.1 |
IsLocalCameraPublishEnabled | 查询是否允许推送相机流。 | 1.18.1 |
ConfigLocalScreenPublish | 设置是否允许推送屏幕流。 | 1.18.1 |
IsLocalScreenPublishEnabled | 查询是否允许推送屏幕流。 | 1.18.1 |
ConfigLocalAudioPublish | 设置是否允许推送音频流。 | 1.18.1 |
IsLocalAudioPublishEnabled | 查询是否允许推送音频流。 | 1.18.1 |
ConfigLocalSimulcast | 设置是否允许推送次要视频流小流。 | 1.18.1 |
IsLocalSimulcastEnabled | 查询是否允许推送次要视频流小流。 | 1.18.1 |
Publish | 手动推送视频和音频流。 | 1.18.1 |
录制相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
StartRecording | 手动开启录制。 | 1.18.1 |
StopRecording | 手动停止录制。 | 1.18.1 |
视频相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
SetExternalVideoSource | 设置是否启用外部视频输入源。 | 1.18.1 |
PushExternalVideoFrame | 输入外部视频数据。 | 1.18.1 |
AddVideoWatermark | 添加水印。 | 1.18.11 |
ClearVideoWatermark | 清除对应数据流水印信息。 | 1.18.11 |
音频相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
SetExternalAudioSource | 设置是否启用外部音频输入推流。 | 1.18.1 |
PushExternalAudioFrameRawData | 输入外部音频数据推流。 | 1.18.1 |
SetExternalAudioPublishVolume | 设置外部输入音频推流混音音量。 | 1.18.1 |
GetExternalAudioPublishVolume | 获取外部输入音频推流混音音量。 | 1.18.1 |
setAudioChannels | 设置音频的推流模式。 | 1.18.12 |
媒体播放器相关接口
API | 描述 | 支持的最低版本 |
---|---|---|
CreateMediaPlayer | 创建媒体播放器。 | 1.18.1 |
DestroyMediaPlayer | 销毁媒体播放器。 | 1.18.1 |
SetEventHandler | 设置播放器状态和事件回调通知。 | 1.18.1 |
GetEventHandler | 获取播放器状态和事件回调句柄。 | 1.18.1 |
LoadResource | 加载播放资源。 | 1.18.1 |
Start | 开始播放。 | 1.18.1 |
Stop | 停止播放。 | 1.18.1 |
Pause | 暂停播放。 | 1.18.1 |
Resume | 恢复播放。 | 1.18.1 |
SeekTo | 跳转播放。 | 1.18.1 |
SetVolume | 设置播放器的音量(影响推流出去的音量)。 | 1.18.1 |
SetVideoSource | 设置播放器的视频数据是否推流。 | 1.18.1 |
EnableAudioSource | 设置播放器的音频数据是否推流。 | 1.18.1 |
GetDuration | 获取播放的总时长。 | 1.18.1 |
GetCurrentPlaybackTime | 获取当前的播放位置。 | 1.18.1 |
GetCurrentVomume | 获取当前的播放音量。 | 1.18.1 |
GetCurrentPlaybackState | 获取当前的播放状态。 | 1.18.1 |
GetIndex | 获取当前的播放器ID。 | 1.18.1 |
接口详情
-
CreateAliRTCEngine:创建AliRTCEngine实例。
AliRTCEngineInterface * CreateAliRTCEngine(EngineEventHandlerInterface * eventHandler, int lowPort, int highPort, const char * logPath, const char * coreServicePath);
参数名 类型 描述 eventHandler EngineEventHandlerInterface * SDK所触发的事件通过EngineEventHandlerInterface类回调通知。 lowPort int 最小的可用端口。 说明 创建一个SDK实例需要占用一个系统端口进行音视频数据传输,建议端口范围设置为42000~45000,并保证其他服务不会占用此范围的端口。highPort int 最大的可用端口。 说明 创建一个SDK实例需要占用一个系统端口进行音视频数据传输,建议端口范围设置为42000~45000,并保证其他服务不会占用此范围的端口。logPath const char * 保存日志的路径。 coreServicePath const char * AliRtcCoreService可执行程序存放的绝对路径。 - Release:释放AliRTCEngine实例。
void Release();
- GetEventHandler:获取事件回调句柄。
EngineEventHandlerInterface * GetEventHandler();
- JoinChannel:加入频道。
int JoinChannel(const AuthInfo &authInfo, const JoinChannelConfig &config);
参数名 类型 描述 authInfo const AuthInfo &a 认证信息,从App Server获取。 config const JoinChannelConfig & 加入频道时的设置项。 - LeaveChannel:离开频道。
int LeaveChannel();
- SetVideoProfile:设置视频流推流参数。
说明 设置之后等到下次推流的时候才能生效。
void SetVideoProfile(AliRTCSdk::Linux::VideoProfile profile, AliRTCSdk::Linux::VideoTrack track);
参数名 类型 描述 profile AliRTCSdk::Linux::VideoProfile 预定义的视频分辨率和帧率,详细请参见VideoProfile。 track AliRTCSdk::Linux::VideoTrack 视频流的类型,详细请参见VideoTrack。 - GetVideoProfile:获取视频流推流参数。
说明 返回的是正在使用的(已经推流中)或者即将被使用的(下一次推流才会生效)视频分辨率和帧率,详细请参见VideoProfile 。返回值不一定是正在使用的VideoProfile,另外VideoTrackScreen是不支持的。
AliRTCSdk::Linux::VideoProfile GetVideoProfile(AliRTCSdk::Linux::VideoTrack track);
参数名 类型 描述 track AliRTCSdk::Linux:VideoTrack 视频流的类型,详细请参见VideoTrack。 - ConfigLocalCameraPublish:设置是否允许推送相机流。
说明 需要调用Publish接口才能生效。默认允许相机流推流。
void ConfigLocalCameraPublish(bool enable);
参数名 类型 描述 enable bool 是否允许推送相机流。取值: - true:允许。
- false:禁止。
- IsLocalCameraPublishEnabled:查询是否允许推送相机流。
返回说明bool IsLocalCameraPublishEnabled();
返回true表示允许,false表示禁止。
- ConfigLocalScreenPublish:设置是否允许推送屏幕流。
说明 需要调用Publish接口才能生效。默认不允许屏幕流推流。
void ConfigLocalScreenPublish(bool enable);
参数名 类型 描述 enable bool 是否允许推送屏幕流。取值: - true:允许。
- false:禁止。
- IsLocalScreenPublishEnabled:查询是否允许推送屏幕流。
返回说明bool IsLocalScreenPublishEnabled();
返回true表示允许,false表示禁止。
- ConfigLocalAudioPublish:设置是否允许推送音频流。
说明 需要调用Publish接口才能生效,默认允许音频推流。
void ConfigLocalAudioPublish(bool enable);
参数名 类型 描述 enable bool 是否允许发布音频流。取值: - true:允许。
- false:禁止。
- IsLocalAudioPublishEnabled:查询是否允许推送音频流小流。
返回说明bool IsLocalAudioPublishEnabled();
返回true表示允许,false表示禁止。
- ConfigLocalSimulcast:设置是否允许推送次要视频流小流。
说明 需要调用Publish接口才能生效。默认允许推送次要视频流。目前只支持相机流,不支持屏幕流。
int ConfigLocalSimulcast(bool enabled, AliRTCSdk::Linux::VideoTrack track);
参数名 类型 描述 enabled bool 是否允许推送次要视频流小流。取值: - true:允许。
- false:禁止。
track AliRTCSdk::Linux::VideoTrack 视频流的类型,详细请参见VideoTrack。 - IsLocalSimulcastEnabled:查询是否允许推送次要视频流小流。
返回说明bool IsLocalSimulcastEnabled();
返回true表示允许,false表示禁止。
- Publish:手动推送视频和音频流。
int Publish();
- StartRecording:手动开启录制。
说明 如果需要手工配置所有推流和拉流,请通过JoinChannelConfig字段,再JoinChannel时,选择RecordingManually。
int StartRecording();
- StopRecording:手动停止录制。
int StopRecording();
- SetExternalVideoSource:设置是否启用外部视频输入源。
说明 启用后使用PushExternalVideoFrame接口输入视频数据。
int SetExternalVideoSource(bool enable, bool useTexture, AliRTCSdk::Linux::VideoSource sourceType, AliRTCSdk::Linux::RenderMode renderMode = AliRTCSdk::Linux::RenderModeFill);
参数名 类型 描述 enabled bool 是否启用外部视频输入源。取值: - true:启用。
- false:关闭。
useTexture bool 是否使用texture模式,目前仅支持false。 sourceType AliRTCSdk::Linux::VideoSource 流类型。 - PushExternalVideoFrame:输入外部视频数据。
说明 目前输入视频类型只支持I420。
int PushExternalVideoFrame(AliRTCSdk::Linux::VideoDataSample *frame, AliRTCSdk::Linux::VideoSource sourceType);
参数名 类型 描述 frame AliRTCSdk::Linux::VideoDataSample * 帧数据。 sourceType AliRTCSdk::Linux::VideoSource 流类型。 - AddVideoWatermark:添加水印。
/** * @brief 通过本地文件路径添加水印 * @param sourceType 添加水印的视频流类型 * @param image_url 水印图片路径,只支持本地路径 * @param options 水印配置 * @return 0:接口调用成功,-1:接口调用失败 * @note 该接口返回值只表示接口调用是否成功,真正的水印是否添加成功通过回调函数返回 */ int AddVideoWatermark(AliRTCSdk::Linux::VideoSource sourceType, const char* image_url, const AliRTCSdk::Linux::WaterMarkConfig & options);
/** * @brief 通过图片内存地址添加水印 * @param sourceType 添加水印的视频流类型 * @param imageData 水印图片内存地址 * @param imageLength 水印图片长度 * @param options 水印配置 * @return 0:接口调用成功,-1:接口调用失败 * @note 该接口返回值只表示接口调用是否成功,真正的水印是否添加成功通过回调函数返回 */ int AddVideoWatermark(AliRTCSdk::Linux::VideoSource sourceType, const uint8_t* imageData, const int32_t imageLength, const AliRTCSdk::Linux::WaterMarkConfig & options);
- ClearVideoWatermark:清除对应数据流水印信息。
/** * @brief 清除对应数据流水印信息 * @param sourceType 清除水印的视频流类型 * @return 0:接口调用成功,-1:接口调用失败 * @note 该接口返回值只表示接口调用是否成功,真正的水印是否清除成功通过回调函数返回 */ virtual int ClearVideoWatermark(AliRTCSdk::Linux::VideoSource sourceType);
- SetExternalAudioSource:设置是否启用外部音频输入推流。
说明 通过SetExternalAudioPublishVolume设置输入音频推流音量。
int SetExternalAudioSource(bool enable, unsigned int sampleRate, unsigned int channelsPerFrame);
参数名 类型 描述 enable bool 是否启用外部音频输入推流。取值: - true:启用。
- false:关闭。
sampleRate unsigned int 采样率。 channelsPerFrame unsigned int 声道数。 返回值大于等于0表示设置成功,小于0表示设置失败。
- PushExternalAudioFrameRawData:输入外部音频数据推流。
说明 当返回值为ERR_AUDIO_BUFFER_FULL时,需要在间隔投递数据时间长度后再次重试投递。
int PushExternalAudioFrameRawData(const void* audioSamples, unsigned int sampleLength, long long timestamp);
参数名 类型 描述 audioSamples const void* 音频数据。 sampleLength unsigned int 音频数据长度。 timestamp long long 时间戳。 返回值大于等于0表示设置成功,小于0表示设置失败。
- SetExternalAudioPublishVolume:设置外部输入音频推流混音音量。
int SetExternalAudioPublishVolume(int volume);
参数名 类型 描述 volume int 音量,取值范围0~100。 - GetExternalAudioPublishVolume:获取外部输入音频推流混音音量。
int GetExternalAudioPublishVolume();
- setAudioChannels:设置音频的推流模式。
int SetAudioChannels(AliRTCSdk::Linux::ExpectedAudioType type);
参数说明
参数名 类型 描述 type AliRTCSdk::Linux::ExpectedAudioType 声道数。 返回说明
返回0表示调用成功,-1表示调用失败。
- CreateMediaPlayer:创建媒体播放器。
AliRTCMediaPlayerInterface * CreateMediaPlayer();
- DestroyMediaPlayer:销毁媒体播放器。
int DestroyMediaPlayer(AliRTCMediaPlayerInterface *mediaPlayer);
- SetEventHandler:设置播放器状态和事件回调通知。返回0表示成功,其他表示失败。
int SetEventHandler(AliRTCMediaPlayerEventHandlerInterface *eventHandler);
参数名 类型 描述 eventHandler AliRTCMediaPlayerEventHandlerInterface * 播放器状态和事件回调句柄。 返回0表示设置成功,其他表示设置失败。
- GetEventHandler:取播放器状态和事件回调句柄。
AliRTCMediaPlayerEventHandlerInterface *GetEventHandler();
- LoadResource:加载播放资源。真正加载资源的成功与否需要通过OnStateChange回调接口中的状态来确定。
int LoadResource(const char *path);
参数名 类型 描述 path const char * 播放资源的地址,目前支持本地绝对路径和在线地址。 返回0表示调用成功,其他表示调用失败。
- Start:开始播放。
说明 该接口需要等到播放器状态变为MediaPlayerStatePrepared才能调用。
返回说明int Start();
返回0表示调用成功,其他表示调用失败。
- Stop:停止播放。
返回说明int Stop();
返回0表示调用成功,其他表示调用失败。
- Pause:暂停播放。
返回说明int Pause();
返回0表示调用成功,其他表示调用失败。
- Resume:恢复播放。
返回说明int Resume();
返回0表示调用成功,其他表示调用失败。
- SeekTo:跳转播放。
int SeekTo(unsigned long long millisecond);
参数名 类型 描述 millisecond unsigned long long 跳转到的播放位置,单位为毫秒。 返回0表示调用成功,其他表示调用失败。
- SetVolume:设置播放器的音量(影响推流出去的音量)。
int SetVolume(int volume);
参数名 类型 描述 volume int 音量,取值范围0~100。 返回0表示调用成功,其他表示调用失败。
- SetVideoSource:设置播放器的视频数据是否推流。
int SetVideoSource(bool enable, AliRTCSdk::Linux::VideoSource sourceType, AliRTCSdk::Linux::RenderMode renderMode);
参数名 类型 描述 enable bool 是否推流。取值: - true:允许。
- false:禁止。
sourceType AliRTCSdk::Linux::VideoSource 选择视频源推流。 renderMode AliRTCSdk::Linux::RenderMode 视频源的缩放方式。 返回0表示调用成功,其他表示调用失败。
- EnableAudioSource:设置播放器的音频数据是否推流。
int EnableAudioSource(bool enable);
参数名 类型 描述 enable bool 是否推流。取值: - true:允许。
- false:禁止。
返回0表示调用成功,其他表示调用失败。
- GetDuration:获取播放的总时长。
说明 需要等到播放器的状态为MediaPlayerStatePrepared才能获取到准确的时长。
unsigned long long GetDuration();
- GetCurrentPlaybackTime:获取当前的播放位置。
说明 需要等到播放器的状态为MediaPlayerStatePrepared才能获取到准确的当前位置。
unsigned long long GetCurrentPlaybackTime();
- GetCurrentVomume:获取当前的播放音量。
说明 需要等到播放器的状态为MediaPlayerStatePrepared才能获取到准确的当前音量。
int GetCurrentVomume();
- GetCurrentPlaybackState:获取当前的播放状态。
AliRTCSdk::Linux::MediaPlayerState GetCurrentPlaybackState();
- GetIndex:获取当前的播放器ID。
说明 可以支持同时创建多个播放器,该接口可以用来区分各个播放器。
int GetIndex();