873 lines
28 KiB
C++
873 lines
28 KiB
C++
/******************************************************************************************************************
|
||
* Copyright(C): 本代码所有版权归MIGU所有
|
||
* @file : IMRTCEngine.hpp
|
||
* @brief : MrtcSdk接口
|
||
* @version : 1.8.0
|
||
* @date : 2022/01/19
|
||
******************************************************************************************************************/
|
||
|
||
#ifndef __I_RTC_ENGINE_HPP__
|
||
#define __I_RTC_ENGINE_HPP__
|
||
|
||
#include "MRTCEngineDefine.hpp"
|
||
|
||
RTCENGINE_NAMESPACE_BEGIN
|
||
|
||
class RTCENGINE_API RTCENGINE_API_CPP IMRTCEngine
|
||
{
|
||
public:
|
||
DELETE_CTOR_COPY(IMRTCEngine);
|
||
/**
|
||
* @brief 构造函数
|
||
*/
|
||
IMRTCEngine() = default;
|
||
|
||
/**
|
||
* @brief 析构函数
|
||
*/
|
||
virtual ~IMRTCEngine() = default;
|
||
|
||
public:
|
||
/**
|
||
* @brief 引擎初始化函数
|
||
* @param engineConfig 引擎配置结构体
|
||
* @param pCallBack 消息回调指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t init(MRTCEngineConfig& engineConfig, IMRTCMessageCallBack* pCallBack) = 0;
|
||
|
||
/**
|
||
* @brief 引擎资源销毁
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t destroy() = 0;
|
||
|
||
/**
|
||
* @brief 设置用户信息
|
||
* @param userId 用户id
|
||
* @param displayName 用户昵称
|
||
* @param roomId 房间id
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setUserInfo(const char* userId, const char* displayName, const char* roomId) = 0;
|
||
|
||
/**
|
||
* @brief 注册监听回调
|
||
* @param eType 监听类型
|
||
* @param pFun 回调基函数指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerListener(MRTCListenerType eType, IMRTCBaseCallBack* pFun) = 0;
|
||
|
||
/**
|
||
* @brief 注册视频数据回调
|
||
* @param listenerType 视频回调类型
|
||
* @param dataType 视频数据格式
|
||
* @param userId 视频生产方的用户id
|
||
* @param callBack 视频渲染回调指针
|
||
* @param MRTCVideoView* view windows专用
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerVideoListener(MRTCVideoListenerType listenerType, MRTCVideoDataType dataType, const char* userId, IMRTCVideoRenderCallBack* callBack, MRTCVideoView* pView = nullptr) = 0;
|
||
|
||
/**
|
||
* @brief 注册远端视频编码后数据回调
|
||
* @param roomId 视频生产方的房间Id
|
||
* @param userId 视频生产方的用户id
|
||
* @param channelIndex 视频生产方的通道id
|
||
* @param callBack 视频渲染回调指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerRemoteEncodedVideoListener(MRTCVideoListenerType eListenerType, const char* roomId, const char* userId, const int16_t channelIndex, IMRTCRemoteEncodedVideoCallBack* pCallBack) = 0;
|
||
|
||
/**
|
||
* @brief 注册音频声浪值回调
|
||
* @param audioSourceType 音频类型
|
||
* @param userId 用户id
|
||
* @param callBack 音频声浪值回调指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerSoundLevelListener(MRTCAudioSourceType audioSourceType, const char* roomId, const char* peerId, const int16_t channelIndex, IMRTCReceivedAudioInfoCallBack* callBack) = 0;
|
||
|
||
/**
|
||
* @brief 进入房间
|
||
* @param authority 鉴权参数
|
||
* @param loginConfig 加入房间参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t joinRoom(MRTCJoinAuthority& authority, MRTCJoinConfig& loginConfig) = 0;
|
||
|
||
/**
|
||
* @brief 离开房间
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t leaveRoom() = 0;
|
||
|
||
/**
|
||
* @brief 进入房间
|
||
* @param address 房间地址
|
||
* @param port 房间端口
|
||
* @param authority 鉴权参数
|
||
* @param loginConfig 加入房间参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t joinIMRoom(const char* address, const unsigned short port, MRTCJoinAuthority& authority, MRTMJoinConfig& loginConfig, const char* roomId = "") = 0;
|
||
|
||
/**
|
||
* @brief 离开房间
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t leaveIMRoom(const char* roomId = "") = 0;
|
||
|
||
/**
|
||
* @brief 加入多房间
|
||
* @param roomId 加入的房间ID
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t joinMultiRoom(const char* roomId = "") = 0;
|
||
|
||
/**
|
||
* @brief 离开多房间
|
||
* @param loginConfig 离开的房间ID
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t leaveMultiRoom(const char* roomId = "") = 0;
|
||
|
||
/**
|
||
* @brief 开启摄像头本地预览
|
||
* @param option 摄像头预览参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startLocalPreview(const MRTCCameraOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭摄像头本地预览
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopLocalPreview() = 0;
|
||
|
||
/**
|
||
* @brief 开始摄像头推流
|
||
* @param option 摄像头推流参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startPublishing(const MRTCPublishOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭摄像头推流
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopPublishing() = 0;
|
||
|
||
/**
|
||
* @brief 开启屏幕分享
|
||
* @param option 屏幕分享参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startScreenSharing(const MRTCScreenOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭屏幕分享
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopScreenSharing() = 0;
|
||
|
||
/**
|
||
* @brief 修改共享流模式
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t changeVideoStreamMode(MRTCVideoSourceType videoSourceType,MRTCContentHint mode, int channelIndex = 0) = 0;
|
||
|
||
/**
|
||
* @brief 动态设置视频编码参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setVideoEncodeConfig(MRTCVideoSourceType videoSourceType, const MRTCVideoEncodeOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 开启麦克风
|
||
* @param option 音频参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startMicStreaming(const MRTCAudioOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭麦克风
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopMicStreaming() = 0;
|
||
|
||
/**
|
||
* @brief 设置模式(摄像头镜像、前后摄像头、扬声器开/关等)
|
||
* @param type 模式类型
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setMode(MRTCModeType type) = 0;
|
||
|
||
/**
|
||
* @brief 暂停/继续消费者或自身摄像头/屏幕分享的视频流
|
||
* @param userId 用户id
|
||
* @param videoSourceType 视频类型
|
||
* @param channelIndex 通道编号
|
||
* @param enable 暂停(true)或继续(false)
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t muteVideo(const char* roomId, const char* userId, MRTCVideoSourceType videoSourceType, bool bEnable = false, uint8_t channelIndex = 0) = 0;
|
||
|
||
/**
|
||
* @brief 暂停/继续消费者或自身摄像头/屏幕分享的音频流
|
||
* @param userId 用户id
|
||
* @param audioSourceType 音频类型
|
||
* @param channelIndex 通道编号
|
||
* @param enable 暂停(true)或继续(false)
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t muteAudio(const char* roomId, const char* userId, MRTCAudioSourceType audioSourceType, bool bEnable = false, uint8_t channelIndex = 0) = 0;
|
||
|
||
/**
|
||
* @brief 设置音效/滤镜插件
|
||
* @param pluginIndex 插件序号,任意大于0的自然数
|
||
* @param type 插件类型
|
||
* @param plugin 插件回调基函数指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t addEffectPlugin(int pluginIndex, MRTCPluginType type, IMRTCEffectPlugin* plugin) = 0;
|
||
|
||
/**
|
||
* @brief 移除音效/滤镜插件
|
||
* @param pluginIndex 插件序号
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t removeEffectPlugin(int pluginIndex) = 0;
|
||
|
||
/**
|
||
* @brief 获取屏幕源/窗口源个数
|
||
* @param type 屏幕分享类型
|
||
* @param count 获取到的个数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getShareSourceCount(MRTCScreenShareType type, uint16_t& count) = 0;
|
||
|
||
/**
|
||
* @brief 获取屏幕源/窗口源列表
|
||
* @param type 屏幕分享类型
|
||
* @param count 个数
|
||
* @param souceList 屏幕分享列表
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getShareSourceList(MRTCScreenShareType type, uint16_t count, MRTCShareSource* souceList) = 0;
|
||
|
||
/*********************************************************************************************
|
||
* 麦克风/扬声器操作接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 设置音频输入/音频输出设备
|
||
* @param type 硬件设备类型
|
||
* @param setting 音频设备设置
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setAudioDevice(MRTCMediaDeviceType type, MRTCAudioDeviceOption setting) = 0;
|
||
|
||
/**
|
||
* @brief 设置本地音频的采集音量
|
||
* @param volume 0~100,默认值100;Android、iOS可超过100,超过100的volume会有爆音的风险,请谨慎操作
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setAudioCaptureVolume(uint32_t volume) = 0;
|
||
|
||
/**
|
||
* @brief 获取本地音频的采集音量
|
||
* @param volume 获取到的音量值
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getAudioCaptureVolume(uint32_t& volume) = 0;
|
||
|
||
/**
|
||
* @brief 设置音频的播放音量
|
||
* @param volume 0-100,默认值100;Android、iOS可超过100,超过100的volume会有爆音的风险,请谨慎操作
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setAudioPlayoutVolume(uint32_t volume) = 0;
|
||
|
||
/**
|
||
* @brief 获取音频的播放音量
|
||
* @param volume 获取到的音量值
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getAudioPlayoutVolume(uint32_t& volume) = 0;
|
||
|
||
/**
|
||
* @brief 获取音频播放设备/音频输入设备/摄像头数量(摄像头仅支持Windows)
|
||
* @param type 硬件设备类型
|
||
* @param number 获取到的数量值
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getDevicesCount(MRTCMediaDeviceType type, uint32_t& number) = 0;
|
||
|
||
/**
|
||
* @brief 获取音频播放设备/音频输入设备名称
|
||
* @param type 硬件设备类型
|
||
* @param index 设备索引
|
||
* @param name 设备名称列表
|
||
* @param guid 设备id列表
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getAudioDeviceName(MRTCMediaDeviceType type, uint16_t index, char name[MAX_DEVICE_NAME_SIZE], char guid[MAX_DEVICE_GUID_SIZE]) = 0;
|
||
|
||
|
||
/**
|
||
* @brief 获取音频播放设备/音频输入设备选择序号
|
||
* @param type 硬件设备类型
|
||
* @param index 设备索引
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getMediaDeviceIndex(MRTCMediaDeviceType type, uint16_t& index) = 0;
|
||
|
||
/**
|
||
* @brief 获取摄像头设备名称(deviceUniqueId、productUniqueId为UTF8字符串)
|
||
* @param index 设备索引
|
||
* @param name 设备名称列表
|
||
* @param deviceUniqueId 设备id列表
|
||
* @param productUniqueId 产品id列表
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getCameraDeviceName(uint16_t index, char name[MAX_DEVICE_NAME_SIZE], char deviceUniqueId[MAX_DEVICE_GUID_SIZE], char productUniqueId[MAX_DEVICE_GUID_SIZE]) = 0;
|
||
|
||
/**
|
||
* @brief 切换扬声器/麦克风/摄像头设备
|
||
* @param type 硬件设备类型
|
||
* @param device 设备名称
|
||
* @param index 设备序号
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t switchDevice(MRTCMediaDeviceType type, const char* device, int index = -1000) = 0;
|
||
|
||
/**
|
||
* @brief 设置重连次数或者时间(若maxTimes、maxSeconds都为设置-1,则无限次重连,直到连上)
|
||
* @param maxTimes 重连最大次数,-1为不限制次数
|
||
* @param maxSeconds 重连最大秒数,-1为不限制时间
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setReConnectLimit(int32_t maxTimes = -1, int32_t maxSeconds = -1) = 0;
|
||
|
||
/**
|
||
* @brief 设置拉流方式
|
||
* @param roomId 房间id
|
||
* @param userId 用户id
|
||
* @param sourceType 视频类型
|
||
* @param type 视频流类型
|
||
* @param channelIndex 流通道
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setPlayVideoStreamType(const char* roomId, const char* userId, MRTCVideoSourceType eSourceType, MRTCVideoStreamType eType , uint8_t channelIndex) = 0;
|
||
|
||
/*********************************************************************************************
|
||
* 视频分享接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 注册视频分享进度回调
|
||
* @param callBack 视频分享进度回调指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerVideoCallBack(IMRTCVideoProcessCallBack* callBack) = 0;
|
||
|
||
/**
|
||
* @brief 启动分享视频
|
||
* @param option 视频文件分享参数
|
||
* @param path 视频文件路径
|
||
* @param loop 是否循环播放
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startPlayVideo(const MRTCVideoFileOption& option, const char* path, bool loop = true) = 0;
|
||
|
||
/**
|
||
* @brief 停止分享视频
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopPlayVideo() = 0;
|
||
|
||
/**
|
||
* @brief 暂停播放视频文件
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t pausePlayVideo() = 0;
|
||
|
||
/**
|
||
* @brief 继续播放视频文件
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t resumePlayVideo() = 0;
|
||
|
||
/**
|
||
* @brief 获取视频文件总时长,单位毫秒
|
||
* @param path 视频文件路径
|
||
* @param duration 获取到的文件时长
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getVideoDurationInMS(const char* path, uint32_t& duration) = 0;
|
||
|
||
/**
|
||
* @brief 设置视频播放进度
|
||
* @param pos 播放位置
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t seekVideoToPosInMS(uint32_t pos) = 0;
|
||
|
||
/**
|
||
* @brief 设置视频播放的音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setVideoPlayoutVolume(int16_t volume) = 0;
|
||
|
||
/**
|
||
* @brief 设置视频远端播放音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setVideoPublishVolume(int16_t volume) = 0;
|
||
|
||
|
||
/*************************************************************************************************
|
||
*
|
||
* 以下接口Windows平台暂不可用 *
|
||
*
|
||
*************************************************************************************************/
|
||
//#ifndef WIN32
|
||
/**
|
||
* @brief 开启音频共享
|
||
* @param option 音频参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startShareAudioStreaming(const MRTCAudioOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭音频共享
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopShareAudioStreaming() = 0;
|
||
|
||
/**
|
||
* @brief 开启耳返功能
|
||
* @param enable 开启(true)或关闭(false)
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setInearMonitoring(bool enable) = 0;
|
||
|
||
/**
|
||
* @brief 设置耳返音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setInEarMonitoringVolume(int16_t volume) = 0;
|
||
|
||
|
||
/*********************************************************************************************
|
||
* 背景音乐操作接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 注册背景音乐进度回调
|
||
* @param callBack 背景音乐进度回调函数指针
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t registerMusicCallBack(IMRTCMusicProcessCallBack* callBack) = 0;
|
||
|
||
/**
|
||
* @brief 启动播放背景音乐
|
||
* @param path 背景音乐路径
|
||
* @param loop 是否循环播放
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startPlayMusic(const char* path, bool loop = true) = 0;
|
||
/**
|
||
* @brief 停止播放背景音乐
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopPlayMusic() = 0;
|
||
/**
|
||
* @brief 暂停播放背景音乐
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t pausePlayMusic() = 0;
|
||
|
||
/**
|
||
* @brief 继续播放背景音乐
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t resumePlayMusic() = 0;
|
||
|
||
/**
|
||
* @brief 获取音乐文件总时长,单位毫秒
|
||
* @param path 音乐文件路径
|
||
* @param duration 获取到的时长
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getMusicDurationInMS(const char* path, uint32_t& duration) = 0;
|
||
|
||
/**
|
||
* @brief 设置音乐播放进度
|
||
* @param pos 播放位置
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t seekMusicToPosInMS(uint32_t pos) = 0;
|
||
/**
|
||
* @brief 设置音乐播放的音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setMusicPlayoutVolume(int16_t volume) = 0;
|
||
/**
|
||
* @brief 设置音乐远端播放音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setMusicPublishVolume(int16_t volume) = 0;
|
||
|
||
|
||
/*********************************************************************************************
|
||
* 自定义视频接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 开启自定义视频
|
||
* @param option 自定义视频流参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t StartCustomVideo(const MRTCCustomVideoOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭摄像头推流
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopCustomVideo() = 0;
|
||
|
||
/**
|
||
* @brief 发送自定义视频数据
|
||
* @param frame 视频帧数据
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t sendCustomVideoData(const MRTCVideoFrame& frame) = 0;
|
||
|
||
//
|
||
// 开启多路自定义视频
|
||
//
|
||
virtual int16_t StartCustomVideo(const MRTCCustomVideoOption& objOption,MRTCPublishChannel channel) = 0;
|
||
|
||
//
|
||
// 关闭指定某通道推流
|
||
//
|
||
virtual int16_t stopCustomVideo(MRTCPublishChannel channel) = 0;
|
||
|
||
//
|
||
// 指定发送多路自定义视频数据
|
||
//
|
||
virtual int16_t sendCustomVideoData(const MRTCVideoFrame& objFrame,MRTCPublishChannel channel) = 0;
|
||
|
||
|
||
/*********************************************************************************************
|
||
* 自定义音频接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 开启自定义音频
|
||
* @param option 音频参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startCustomAudio(const MRTCAudioOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭自定义音频
|
||
* @param channeIndex 通道
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopCustomAudio(uint8_t channelIndex = 0) = 0;
|
||
|
||
/**
|
||
* @brief 发送自定义音频数据
|
||
* @param channeIndex 通道
|
||
* @param data 音频数据,默认采用16bit的位深进行采样
|
||
* @param sampleRate 采样率
|
||
* @param numberOfChannels 通道数
|
||
* @param dataLength 数据长度
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t sendCustomAudioData(uint8_t channelIndex = 0, const void* pData = nullptr, int32_t nSampleRate = 48000, uint64_t nNumberOfChannels = 2, uint64_t dataLength = 0) = 0;
|
||
|
||
/**
|
||
* @brief 发送自定义AAC音频数据
|
||
* @param channeIndex 通道
|
||
* @param data AAC音频数据
|
||
* @param dataLength 数据长度
|
||
* @param sampleRate 采样率
|
||
* @param channels 通道数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t sendCustomAudioAACData(uint8_t channelIndex = 0, const unsigned char* pData = nullptr, unsigned int nDataLength = 0, uint32_t sampleRate = 48000, uint32_t channels = 2) = 0;
|
||
|
||
/**
|
||
* @brief 设置自定义音频推流音量
|
||
* @param volume 0~100
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t setCustomAudioPublishVolume(int16_t volume) = 0;
|
||
|
||
/*********************************************************************************************
|
||
* 自定义裸视频流接口 *
|
||
********************************************************************************************/
|
||
/**
|
||
* @brief 开启自定义裸视频
|
||
* @param option 自定义裸视频流参数
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t startCustomRawVideo(const MRTCCustomRawVideoOption& option) = 0;
|
||
|
||
/**
|
||
* @brief 关闭自定义裸视频推流
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t stopCustomRawVideo(uint8_t channelIndex = 0) = 0;
|
||
|
||
/**
|
||
* @brief 发送自定义裸视频数据
|
||
* @param
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t sendCustomRawVideoData(const MRTCRawVideoFrame& frame) = 0;
|
||
|
||
/**
|
||
* @brief 切换用户角色
|
||
* @inparam role 角色
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t switchClientRole(const MRTCClientRole& role) = 0;
|
||
|
||
/**
|
||
* @brief 获取房间总人数
|
||
* @outparam nCount
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getUserCount(int32_t& nCount) = 0;
|
||
|
||
/**
|
||
* @brief 分页获取房间用户列表
|
||
* @outparam peerList 人员列表
|
||
* @outparam nCount 个数
|
||
* @inparam page 页数 默认 0
|
||
* @inparam limit 每页人数限制 0-100 默认 10
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getRoomUsers(MRTCRoomUserInfo* peerList, int32_t& nCount, const int32_t page = 0, const int32_t limit = 10) = 0;
|
||
|
||
/**
|
||
* @brief 分页获取房间用户列表
|
||
* @outparam peerList 人员列表
|
||
* @outparam nCount 个数
|
||
* @inparam page 页数 默认 0
|
||
* @inparam limit 每页人数限制 0-100 默认 10
|
||
* @return 返回0代表成功
|
||
*/
|
||
virtual int16_t getRTMRoomUsers(MRTMRoomUserInfo* peerList, int32_t& nCount, const char* roomId, const int32_t page = 0, const int32_t limit = 10) = 0;
|
||
|
||
|
||
//#endif
|
||
|
||
|
||
/*************************************************************************************************
|
||
*
|
||
* 以下是其他平台特性接口 *
|
||
*
|
||
*************************************************************************************************/
|
||
|
||
/**
|
||
* @brief 同步网络状态
|
||
*/
|
||
virtual void synNetworkStaus(bool enable, const char* networkType) = 0;
|
||
|
||
/**
|
||
* @brief 开始播放设备
|
||
*/
|
||
virtual int16_t StartPlayout() = 0;
|
||
|
||
/**
|
||
* @brief 停止播放设备
|
||
*/
|
||
virtual int16_t StopPlayout()= 0;
|
||
|
||
#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
|
||
//
|
||
// 设置使用通话、媒体
|
||
//
|
||
virtual int16_t setUseMedia(bool bPlayoutUseMedia, bool bRecordUseMedia) = 0;
|
||
#endif
|
||
//
|
||
// 安卓音视频启动、采集错误上报
|
||
//
|
||
virtual void getWebrtcVideoAndAudioDeviceError(int16_t sourceType, const char * errorMsg) = 0;
|
||
|
||
|
||
//
|
||
// 设置混流推流
|
||
//
|
||
virtual int16_t startLiveStreaming(MRTCLiveStreamingInfo& liveStreamingInfo,
|
||
MRTCPublishAndMixEncoding& encoding,
|
||
std::vector<mrtc::MRTCPublishAndMixUserList> userList) = 0;
|
||
|
||
//
|
||
// 更新混流推流
|
||
//
|
||
virtual int16_t updateLiveStreaming(std::vector<mrtc::MRTCPublishAndMixUserList> userList,
|
||
MRTCLiveStreamMode mode) = 0;
|
||
//
|
||
// 停止混流推流
|
||
//
|
||
virtual int16_t stopLiveStreaming() = 0;
|
||
|
||
//
|
||
// 发送自定义消息
|
||
//
|
||
virtual int16_t sendCustomMessage(const char* roomid, const char* peerid,std::vector<std::string> m_Peers,const char* content) = 0;
|
||
|
||
//
|
||
// 设置硬编码
|
||
//
|
||
virtual int16_t requireHardwareEncoder(bool enable = true) = 0;
|
||
|
||
//
|
||
// 设置硬解码
|
||
//
|
||
virtual int16_t requireHardwareDecoder(bool enable = true) = 0;
|
||
|
||
//
|
||
// 设置是否打开丢帧
|
||
//
|
||
virtual int16_t setEnableIgnoreFrame(bool enable = true) = 0;
|
||
|
||
//
|
||
// 根据StreamID 调整音量
|
||
//
|
||
virtual int16_t SetPlayVolume(const std::string peerId, const std::string dataType, int16_t audioSourceType, int16_t videoSourceType, int16_t volume) = 0;
|
||
|
||
//
|
||
// 上传Dump文件
|
||
//
|
||
virtual int16_t uploadDump(const char*& errorMessage) = 0;
|
||
|
||
virtual int16_t setVerbose(bool on) = 0;
|
||
|
||
//
|
||
// 开启自定义数据传输
|
||
//
|
||
virtual int16_t StartCustomData(const char* customParam) = 0;
|
||
|
||
//
|
||
// 关闭自定义数据传输
|
||
//
|
||
virtual int16_t StopCustomData() = 0;
|
||
|
||
//
|
||
// 发送自定义数据
|
||
//
|
||
virtual int16_t SendCustomData(const MRTCCustomDataObject &object) = 0;
|
||
|
||
//
|
||
// 设置特定某路视频流超分的开关
|
||
//
|
||
virtual int16_t EnableSuperResolution(MRTCSuperResolutionOption& srOption) = 0;
|
||
|
||
//
|
||
// 开启H265编码,接口已废弃
|
||
//
|
||
virtual int16_t EnableH265(bool enable) = 0;
|
||
|
||
// 开启安全模式,限制某些特性
|
||
virtual void EnterMRTCSafeMode(MRTCSafeMode safeMode,bool isEnable) = 0;
|
||
|
||
// 外部创建混音能力
|
||
virtual void enableAudioMixCapablity(bool enable,int audioSampleRate, int audioChannel) = 0;
|
||
|
||
// 外部发送混音音频数据
|
||
virtual int16_t sendAudioMixData(const int16_t* audioData, int32_t dataLength, int32_t audioVolume) = 0;
|
||
|
||
// 设置关键帧间隔
|
||
virtual int16_t setVideoKeyFrameInterval(int interval) = 0;
|
||
|
||
// 设置音频信息回调间隔
|
||
virtual int16_t setAudioInfoInterval(int interval) = 0;
|
||
|
||
// 设置质量回调间隔
|
||
virtual int16_t setQualityInterval(int interval) = 0;
|
||
|
||
// 设置Vad开关
|
||
virtual int16_t enabelVad(bool enable) = 0;
|
||
|
||
// 设置mic静音
|
||
virtual int16_t SetMicMute(bool bMute) = 0;
|
||
|
||
// 获取Mic是否静音
|
||
virtual bool IsMicMuted() = 0;
|
||
|
||
// 获取SDK能力清单
|
||
virtual const char* SDKCapability() = 0;
|
||
|
||
// 获取摄像头能力 pCamList传入最大10数组指针
|
||
virtual int16_t getCameraCapabilities(MRTCCameraCapabilities* pCamList, int& nCount) = 0;
|
||
|
||
// 这里是兼容处理,正常情况这个宏是预编译就定义好的
|
||
// 防止某个平台未定义,定义默认值为使用异步
|
||
#ifndef API_SYNC
|
||
#define API_SYNC 0
|
||
#endif
|
||
// static void setUseSyncApi(bool enable) {
|
||
//// 这个方法只能这么写,否则define会报警告,有可能执行错误
|
||
//// 需要重新定义API_SYNC 的值
|
||
// if (enable){
|
||
//#ifdef API_SYNC
|
||
//#undef API_SYNC
|
||
//#endif
|
||
//#define API_SYNC 1
|
||
// SL_LOG_DEBUG2("Engine::setUseSyncApi", "Use sync api.");
|
||
// } else {
|
||
//#ifdef API_SYNC
|
||
//#undef API_SYNC
|
||
//#endif
|
||
//#define API_SYNC 0
|
||
// SL_LOG_DEBUG2("Engine::setUseSyncApi", "Use async api.");
|
||
// }
|
||
// }
|
||
};
|
||
|
||
/**
|
||
* @brief 获取SDK版本H265H26
|
||
*/
|
||
RTCENGINE_API const char* getSDKVersion();
|
||
|
||
/**
|
||
* @brief 获取Git版本
|
||
*/
|
||
RTCENGINE_API const char* getGitVersion();
|
||
|
||
/**
|
||
* @brief 获取编译时间
|
||
*/
|
||
RTCENGINE_API const char* getBuildTime();
|
||
|
||
/**
|
||
* @brief 上传日志
|
||
*/
|
||
RTCENGINE_API int16_t uploadLog(const char* applicationId, const char* userId, const char* userName, const char*& errorMessage);
|
||
|
||
/**
|
||
* @brief 设置日志路径
|
||
*/
|
||
RTCENGINE_API void setSDKLogDirectory(const char* logDirectory);
|
||
|
||
|
||
#ifdef __ANDROID__
|
||
RTCENGINE_API void InitJavaVM(jobject context, jobject activity);
|
||
RTCENGINE_API void UnInitJavaVM();
|
||
RTCENGINE_API void* GetPCClient();
|
||
RTCENGINE_API void RequestScreenShare(IMRTCRequestCallBack* callbak);
|
||
#endif
|
||
|
||
RTCENGINE_NAMESPACE_END
|
||
|
||
#endif //__I_RTC_ENGINE_HPP__
|