TXAudioEffectManager.h
8.79 KB
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
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
/*
* Module: TXAudioEffectManager 音乐和人声设置类
*
* Function: 用于音乐、短音效和人声效果功能的使用
*
*/
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^TXAudioMusicStartBlock)(NSInteger errCode);
typedef void (^TXAudioMusicProgressBlock)(NSInteger progressMs, NSInteger durationMs);
typedef void (^TXAudioMusicCompleteBlock)(NSInteger errCode);
@class TXAudioMusicParam;
typedef NS_ENUM(NSInteger, TXVoiceChangeType);
typedef NS_ENUM(NSInteger, TXVoiceReverbType);
@interface TXAudioEffectManager : NSObject
/// TXAudioEffectManager对象不可直接创建
/// 要通过 `TRTCCloud` 或 `TXLivePush` 的 `getAudioEffectManager` 接口获取
- (instancetype)init NS_UNAVAILABLE;
/////////////////////////////////////////////////////////////////////////////////
//
// (一)人声相关特效函数
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 人声相关特效函数
/// @{
/**
* 1.1 开启耳返
*
* 开启后会在耳机里听到自己的声音。
*
* @note 仅在戴耳机时有效,暂时仅支持部分采集延迟较低的机型
* @param enable true:开启;false:关闭
*/
- (void)enableVoiceEarMonitor:(BOOL)enable;
/**
* 1.2 设置耳返音量
*
* @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100
*
* @note 如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
*/
- (void)setVoiceEarMonitorVolume:(NSInteger)volume;
/**
* 1.3 设置人声的混响效果(KTV、小房间、大会堂、低沉、洪亮...)
*
* @note 设置的效果在退房后会失效,如果下次进房还需要对应特效,需要调用此接口再次设置。
*/
- (void)setVoiceReverbType:(TXVoiceReverbType)reverbType;
/**
* 1.4 设置人声的变声特效(萝莉、大叔、重金属、外国人...)
*
* @note 设置的效果在退房后会失效,如果下次进房还需要对应特效,需要调用此接口再次设置。
*/
- (void)setVoiceChangerType:(TXVoiceChangeType)changerType;
/**
* 1.5 设置麦克风采集人声的音量
*
* @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100
*
* @note 如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
*/
- (void)setVoiceVolume:(NSInteger)volume;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (二)背景音乐特效函数
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 人声相关特效函数
/// @{
/**
* 2.1 开始播放背景音乐
*
* 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。
*
* @note 若您想同时播放多个音乐,请分配不同的 ID 进行播放。
* 如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。
* @param musicParam 音乐参数
* @param startBlock 播放开始回调
* @param progressBlock 播放进度回调
* @param completeBlock 播放结束回调
*/
- (void)startPlayMusic:(TXAudioMusicParam *)musicParam
onStart:(TXAudioMusicStartBlock _Nullable)startBlock
onProgress:(TXAudioMusicProgressBlock _Nullable)progressBlock
onComplete:(TXAudioMusicCompleteBlock _Nullable)completeBlock;
/**
* 2.2 停止播放背景音乐
*
* @param id 音乐 ID
*/
- (void)stopPlayMusic:(int32_t)id;
/**
* 2.3 暂停播放背景音乐
*
* @param id 音乐 ID
*/
- (void)pausePlayMusic:(int32_t)id;
/**
* 2.4 恢复播放背景音乐
*
* @param id 音乐 ID
*/
- (void)resumePlayMusic:(int32_t)id;
/**
* 2.5 设置背景音乐的远端音量大小,即主播可以通过此接口设置远端观众能听到的背景音乐的音量大小。
*
* @param id 音乐 ID
* @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100
*
* @note 如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
*/
- (void)setMusicPublishVolume:(int32_t)id volume:(NSInteger)volume;
/**
* 2.6 设置背景音乐的本地音量大小,即主播可以通过此接口设置主播自己本地的背景音乐的音量大小。
*
* @param id 音乐 ID
* @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100
*
* @note 如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
*/
- (void)setMusicPlayoutVolume:(int32_t)id volume:(NSInteger)volume;
/**
* 2.7 设置全局背景音乐的本地和远端音量的大小
*
* @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100
*
* @note 如果要将 volume 设置为大于100的数值,需要进行特殊配置,请联系技术支持。
*/
- (void)setAllMusicVolume:(NSInteger)volume;
/**
* 2.8 调整背景音乐的音调高低
*
* @param id 音乐 ID
* @param pitch 音调,默认值是0.0f,范围是:[-1 ~ 1] 之间的浮点数;
*/
- (void)setMusicPitch:(int32_t)id pitch:(double)pitch;
/**
* 2.9 调整背景音乐的变速效果
*
* @param id 音乐 ID
* @param speedRate 速度,默认值是1.0f,范围是:[0.5 ~ 2] 之间的浮点数;
*/
- (void)setMusicSpeedRate:(int32_t)id speedRate:(double)speedRate;
/**
* 2.10 获取背景音乐当前的播放进度(单位:毫秒)
*
* @param id 音乐 ID
* @return 成功返回当前播放时间,单位:毫秒,失败返回-1
*/
- (NSInteger)getMusicCurrentPosInMS:(int32_t)id;
/**
* 2.11 设置背景音乐的播放进度(单位:毫秒)
*
* @note 请尽量避免频繁地调用该接口,因为该接口可能会再次读写音乐文件,耗时稍高。
* 当配合进度条使用时,请在进度条拖动完毕的回调中调用,而避免在拖动过程中实时调用。
*
* @param id 音乐 ID
* @param pts 单位: 毫秒
*/
- (void)seekMusicToPosInMS:(int32_t)id pts:(NSInteger)pts;
/**
* 2.12 获取景音乐文件的总时长(单位:毫秒)
*
* @param path 音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长。
* @return 成功返回时长,失败返回-1
*/
- (NSInteger)getMusicDurationInMS:(NSString *)path;
/// @}
@end
@interface TXAudioMusicParam : NSObject
/// 【字段含义】音乐 ID
/// 【特殊说明】SDK 允许播放多路音乐,因此需要音乐 ID 进行标记,用于控制音乐的开始、停止、音量等
@property (nonatomic) int32_t ID;
/// 【字段含义】音乐文件的绝对路径
@property (nonatomic, copy) NSString *path;
/// 【字段含义】音乐循环播放的次数
/// 【推荐取值】取值范围为0 - 任意正整数,默认值:0。0表示播放音乐一次;1表示播放音乐两次;以此类推
@property (nonatomic) NSInteger loopCount;
/// 【字段含义】是否将音乐传到远端
/// 【推荐取值】YES:音乐在本地播放的同时,会上行至云端,因此远端用户也能听到该音乐;NO:音乐不会上行至云端,因此只能在本地听到该音乐。默认值:NO
@property (nonatomic) BOOL publish;
/// 【字段含义】播放的是否为短音乐文件
/// 【推荐取值】YES:需要重复播放的短音乐文件;NO:正常的音乐文件。默认值:NO
@property (nonatomic) BOOL isShortFile;
/// 【字段含义】音乐开始播放时间点,单位毫秒
@property (nonatomic) NSInteger startTimeMS;
/// 【字段含义】音乐结束播放时间点,单位毫秒,0或者-1表示播放至文件结尾。
@property (nonatomic) NSInteger endTimeMS;
@end
typedef NS_ENUM(NSInteger, TXVoiceReverbType) {
TXVoiceReverbType_0 = 0, ///< 关闭混响
TXVoiceReverbType_1 = 1, ///< KTV
TXVoiceReverbType_2 = 2, ///< 小房间
TXVoiceReverbType_3 = 3, ///< 大会堂
TXVoiceReverbType_4 = 4, ///< 低沉
TXVoiceReverbType_5 = 5, ///< 洪亮
TXVoiceReverbType_6 = 6, ///< 金属声
TXVoiceReverbType_7 = 7, ///< 磁性
};
typedef NS_ENUM(NSInteger, TXVoiceChangeType) {
TXVoiceChangeType_0 = 0, ///< 关闭变声
TXVoiceChangeType_1 = 1, ///< 熊孩子
TXVoiceChangeType_2 = 2, ///< 萝莉
TXVoiceChangeType_3 = 3, ///< 大叔
TXVoiceChangeType_4 = 4, ///< 重金属
TXVoiceChangeType_5 = 5, ///< 感冒
TXVoiceChangeType_6 = 6, ///< 外国人
TXVoiceChangeType_7 = 7, ///< 困兽
TXVoiceChangeType_8 = 8, ///< 死肥仔
TXVoiceChangeType_9 = 9, ///< 强电流
TXVoiceChangeType_10 = 10, ///< 重机械
TXVoiceChangeType_11 = 11, ///< 空灵
};
NS_ASSUME_NONNULL_END