Blame view

HHMedicSDK/TXLiteAVSDK_TRTC.framework/Headers/cpp_interface/ITXAudioEffectManager.h 7.82 KB
chengyanfang authored
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
#ifndef __ITXAUDIOEFFECTMANAGER_H__
#define __ITXAUDIOEFFECTMANAGER_H__

namespace trtc {

/// @defgroup ITXAudioEffectManager_cplusplus ITXAudioEffectManager
/// 腾讯云视频通话功能音乐和人声设置接口
/// @{
enum TXVoiceReverbType
{
    TXLiveVoiceReverbType_0         = 0,    ///< 关闭混响
    TXLiveVoiceReverbType_1         = 1,    ///< KTV
    TXLiveVoiceReverbType_2         = 2,    ///< 小房间
    TXLiveVoiceReverbType_3         = 3,    ///< 大会堂
    TXLiveVoiceReverbType_4         = 4,    ///< 低沉
    TXLiveVoiceReverbType_5         = 5,    ///< 洪亮
    TXLiveVoiceReverbType_6         = 6,    ///< 金属声
    TXLiveVoiceReverbType_7         = 7,    ///< 磁性
};

class ITXMusicPlayObserver {
public:
    virtual ~ITXMusicPlayObserver() {}

    /// 背景音乐开始播放
    virtual void onStart(int id,int errCode) = 0;

    /// 背景音乐的播放进度
    virtual void onPlayProgress(int id,long curPtsMS,long durationMS) = 0;

    /// 背景音乐已播放完毕
    virtual void onComplete(int id,int errCode) = 0;
};

class AudioMusicParam {
public:
    /// 【字段含义】音乐 ID
    /// 【特殊说明】SDK 允许播放多路音乐,因此需要音乐 ID 进行标记,用于控制音乐的开始、停止、音量等
    int id;

    /// 【字段含义】音乐文件的绝对路径
    char* path;

    /// 【字段含义】音乐循环播放的次数
    /// 【推荐取值】取值范围为0 - 任意正整数,默认值:0。0表示播放音乐一次;1表示播放音乐两次;以此类推
    int loopCount;

    /// 【字段含义】是否将音乐传到远端
    /// 【推荐取值】YES:音乐在本地播放的同时,会上行至云端,因此远端用户也能听到该音乐;NO:音乐不会上行至云端,因此只能在本地听到该音乐。默认值:NO
    bool publish;

    /// 【字段含义】播放的是否为短音乐文件
    /// 【推荐取值】YES:需要重复播放的短音乐文件;NO:正常的音乐文件。默认值:NO
    bool isShortFile;

    /// 【字段含义】音乐开始播放时间点,单位毫秒
    long startTimeMS;

    /// 【字段含义】音乐结束播放时间点,单位毫秒,0表示播放至文件结尾。
    long endTimeMS;

    AudioMusicParam(int id_, char* path_) {
        path = path_;
        id = id_;
        loopCount = 0;
        publish = false;
        isShortFile = false;
        startTimeMS = 0;
        endTimeMS = 0;
    }
};


class ITXAudioEffectManager
{
protected:
    ITXAudioEffectManager() {}
    virtual ~ITXAudioEffectManager() {}

public:
/////////////////////////////////////////////////////////////////////////////////
//
//                      (一)人声相关特效函数
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 人声相关特效函数
/// @{

    /**
     * 1.1 设置人声的混响效果(KTV、小房间、大会堂、低沉、洪亮...)
     *
     * @note  设置的效果在退房后会失效,如果下次进房还需要对应特效,需要调用此接口再次设置。
     */
    virtual void setVoiceReverbType(TXVoiceReverbType type) = 0;

    /**
     * 1.2 设置麦克风采集人声的音量
     *
     * @param volume 音量大小,100为原始音量,取值范围为0 - 150;默认值:100
     *
     * @note  如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
     */
    virtual void setVoiceCaptureVolume(int volume) = 0;
/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (二)背景音乐特效函数
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 背景音乐特效函数
/// @{
    /**
     * 2.1 设置背景音乐的播放进度回调接口
     *
     * @param musicId   音乐 ID
     * @param observer  具体参考 ITXMusicPlayObserver 中定义接口
     */
    virtual void setMusicObserver(int musicId, ITXMusicPlayObserver* observer) = 0;

    /**
     * 2.2 开始播放背景音乐
     *
     * 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。
     *
     * @note 若您想同时播放多个音乐,请分配不同的 ID 进行播放。
     *       如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。
     * @param musicParam 音乐参数
     */
    virtual void startPlayMusic(AudioMusicParam musicParam) = 0;

    /**
     * 2.3 停止播放背景音乐
     *
     * @param id  音乐 ID
     */
    virtual void stopPlayMusic(int id) = 0;

    /**
     * 2.4 暂停播放背景音乐
     *
     * @param id  音乐 ID
     */
    virtual void pausePlayMusic(int id) = 0;

    /**
     * 2.5 恢复播放背景音乐
     *
     * @param id  音乐 ID
     */
    virtual void resumePlayMusic(int id) = 0;

    /**
     * 2.6 设置背景音乐的远端音量大小,即主播可以通过此接口设置远端观众能听到的背景音乐的音量大小。
     *
     * @param id    音乐 ID
     * @param volume 音量大小,100为原始音量,取值范围为0 - 150;默认值:100
     *
     * @note  如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
     */
    virtual void setMusicPublishVolume(int id, int volume) = 0;

    /**
     * 2.7 设置背景音乐的本地音量大小,即主播可以通过此接口设置主播自己本地的背景音乐的音量大小。
     *
     * @param id    音乐 ID
     * @param volume 音量大小,100为原始音量,取值范围为0 - 150;默认值:100
     *
     * @note  如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
     */
    virtual void setMusicPlayoutVolume(int id, int volume) = 0;

    /**
     * 2.8 设置全局背景音乐的本地和远端音量的大小
     *
     * @param volume 音量大小,100为原始音量,取值范围为0 - 150;默认值:100
     *
     * @note  如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
     */
    virtual void setAllMusicVolume(int volume) = 0;

    /**
     * 2.9 调整背景音乐的音调高低
     *
     * @param id   音乐 ID
     * @param pitch 音调,默认值是0.0f,范围是:[-1 ~ 1] 之间的浮点数;
     */
    virtual void setMusicPitch(int id, float pitch) = 0;

    /**
     * 2.10 调整背景音乐的变速效果
     *
     * @param id   音乐 ID
     * @param speedRate 速度,默认值是1.0f,范围是:[0.5 ~ 2] 之间的浮点数;
     */
    virtual void setMusicSpeedRate(int id, float speedRate) = 0;

    /**
     * 2.11 获取背景音乐当前的播放进度(单位:毫秒)
     *
     * @param id   音乐 ID
     * @return 成功返回当前播放时间,单位:毫秒,失败返回-1
     */
    virtual long getMusicCurrentPosInMS(int id) = 0;

    /**
     * 2.12 设置背景音乐的播放进度(单位:毫秒)
     *
     * @note 请尽量避免频繁地调用该接口,因为该接口可能会再次读写音乐文件,耗时稍高。
     *       当配合进度条使用时,请在进度条拖动完毕的回调中调用,而避免在拖动过程中实时调用。
     *
     * @param id   音乐 ID
     * @param pts 单位: 毫秒
     */
    virtual void seekMusicToPosInTime(int id, int pts) = 0;

    /**
     * 2.13 获取景音乐文件的总时长(单位:毫秒)
     *
     * @param path 音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长。
     * @return 成功返回时长,失败返回-1
     */
    virtual long getMusicDurationInMS(char* path) = 0;

};
/// @}
}

#ifdef _WIN32
using namespace trtc;
#endif

#endif /* __ITXAUDIOEFFECTMANAGER_H__ */