通过阅读本文,您可以了解到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:手动推送视频和音频流。
    说明 需要推送的流通过API ConfigLocalAudioPublishConfigLocalCameraPublishConfigLocalScreenPublish进行设置。
    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();