NIMSDK-iOS
载入中...
搜索中...
未找到
NIMMediaManagerProtocol.h
浏览该文件的文档.
1//
2// NIMMediaManagerProtocol.h
3// NIMLib
4//
5// Created by Netease.
6// Copyright (c) 2015年 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
10
11NS_ASSUME_NONNULL_BEGIN
12
13/**
14 * 音频输出设备类型
15 */
16typedef NS_ENUM(NSInteger, NIMAudioOutputDevice){
17 /**
18 * 听筒
19 */
21 /**
22 * 扬声器
23 */
25};
26
27
28/**
29 * 云信支持的音频类型
30 */
31typedef NS_ENUM(NSInteger, NIMAudioType) {
32 /**
33 * aac
34 */
36 /**
37 * amr
38 */
40};
41
42
43/**
44 * 语音转文字
45 *
46 * @param error 执行结果,如果成功error为nil
47 * @prarm text 转换后的文本
48 */
49typedef void(^NIMAudioToTextBlock)(NSError * __nullable error,NSString * __nullable text);
50
51
52/**
53 * 语音转文字选项
54 */
55@interface NIMAudioToTextOption : NSObject
56
57/**
58 * 音频URL
59 * @discussion 目前只支持云信服务器的URL,不支持外链
60 */
61@property (nonatomic,copy) NSString *url;
62
63/**
64 * 音频本地地址
65 * @discussion APP需要保证音频已经下载到本地
66 */
67@property (nonatomic,copy) NSString *filepath;
68@end
69
70
71/**
72 * 多媒体委托
73 */
74@protocol NIMMediaManagerDelegate <NSObject>
75
76@optional
77
78/**
79 * 开始播放音频的回调
80 *
81 * @param filePath 音频文件路径
82 * @param error 错误信息
83 */
84- (void)playAudio:(NSString *)filePath didBeganWithError:(nullable NSError *)error;
85
86/**
87 * 播放完音频的回调
88 *
89 * @param filePath 音频文件路径
90 * @param error 错误信息
91 */
92- (void)playAudio:(NSString *)filePath didCompletedWithError:(nullable NSError *)error;
93
94/**
95 * 播放完音频的进度回调
96 *
97 * @param filePath 音频文件路径
98 * @param value 播放进度 0.0 - 1.0
99 */
100- (void)playAudio:(NSString *)filePath progress:(float)value;
101
102/**
103 * 停止播放音频的回调
104 *
105 * @param filePath 音频文件路径
106 * @param error 错误信息
107 */
108- (void)stopPlayAudio:(NSString *)filePath didCompletedWithError:(nullable NSError *)error;
109
110/**
111 * 播放音频开始被打断回调
112 */
113- (void)playAudioInterruptionBegin;
114
115/**
116 * 播放音频结束被打断回调
117 */
118- (void)playAudioInterruptionEnd;
119
120/**
121 * 开始录制音频的回调
122 *
123 * @param filePath 录制的音频的文件路径
124 * @param error 错误信息
125 * @discussion 如果录音失败,filePath 有可能为 nil
126 */
127- (void)recordAudio:(nullable NSString *)filePath didBeganWithError:(nullable NSError *)error;
128
129/**
130 * 录制音频完成后的回调
131 *
132 * @param filePath 录制完成的音频文件路径
133 * @param error 错误信息
134 */
135- (void)recordAudio:(nullable NSString *)filePath didCompletedWithError:(nullable NSError *)error;
136
137/**
138 * 录音被取消的回调
139 */
140- (void)recordAudioDidCancelled;
141
142/**
143 * 音频录制进度更新回调
144 *
145 * @param currentTime 当前录制的时间
146 */
147- (void)recordAudioProgress:(NSTimeInterval)currentTime;
148
149/**
150 * 录音开始被打断回调
151 */
152- (void)recordAudioInterruptionBegin;
153
154/**
155 * 录音结束被打断回调
156 */
157- (void)recordAudioInterruptionEnd;
158
159@end
160
161/**
162 * 多媒体控制协议
163 */
164@protocol NIMMediaManager <NSObject>
165
166@required
167
168/**
169 * 录音进度更新间隔
170 * @discussion 如果值大于0,则会按照相应间隔调用recordAudioProgress:回调,默认值为0.3
171 */
172@property (nonatomic, assign) NSTimeInterval recordProgressUpdateTimeInterval;
173
174#pragma mark - play audio
175/**
176 * 切换音频输出设备
177 *
178 * @param outputDevice 音频输出设备
179 *
180 * @return 是否切换成功
181 */
182- (BOOL)switchAudioOutputDevice:(NIMAudioOutputDevice)outputDevice;
183
184
185/**
186 * 在播放声音的时候,如果手机贴近耳朵,是否需要自动切换成听筒播放
187 *
188 * @param needProximityMonitor 是否需要贴耳传感器监听
189 */
190- (void)setNeedProximityMonitor:(BOOL)needProximityMonitor;
191
192
193/**
194 * 是否正在播放音频
195 *
196 */
197- (BOOL)isPlaying;
198
199/**
200 * 播放音频文件
201 *
202 * @discussion 开始播放,NIMMediaManagerDelegate中的playAudio:didBeganWithError:回调会被触发,播放完成后, NIMMediaManagerDelegate中的playAudio:didCompletedWithError:回调会被触发
203 * @param filepath 音频文件路径
204 */
205- (void)play:(NSString *)filepath;
206
207/**
208 * 停止播放音频
209 *
210 * @discussion 音频播放完成后NIMMediaManagerDelegate中的playAudio:didCompletedWithError:回调会被触发
211 */
212- (void)stopPlay;
213
214
215/**
216 * 设置播放音频的起始时间
217 * @param timestamp 起始时间
218 * @discussion 起始时间不能大于整个音频的时间,否则播放无效。调用此方法后,不需要再调用 play: 方法,自动播放
219 */
220- (BOOL)seek:(NSTimeInterval)timestamp;
221
222#pragma mark - record audio
223
224/**
225 * 是否正在录音
226 *
227 */
228- (BOOL)isRecording;
229
230/**
231 * 开始录制音频
232 *
233 * @param duration 最长录音时间
234 * @discussion 开始录音,NIMMediaManagerDelegate中的recordAudio:didBeganWithError:回调会被触发,录音完成后, NIMMediaManagerDelgate中的recordAudio:didCompletedWithError:回调会被触发
235 * 默认使用 aac 编码格式
236 */
237- (void)recordForDuration:(NSTimeInterval)duration;
238/**
239 * 开始录音
240 *
241 * @param type 音频类型
242 * @param duration 最大时长
243 * @discussion 开始录音,NIMMediaManagerDelegate中的recordAudio:didBeganWithError:回调会被触发,录音完成后, NIMMediaManagerDelegate中的recordAudio:didCompletedWithError:回调会被触发
244 */
245- (void)record:(NIMAudioType)type
246 duration:(NSTimeInterval)duration;
247
248/**
249 * 停止录制音频
250 *
251 * @discussion 停止录音后NIMMediaManagerDelegate中的recordAudio:didCompletedWithError:回调会被触发
252 */
253- (void)stopRecord;
254
255/**
256 * 取消录制音频
257 *
258 * @discussion 录音取消后,NIMMediaManagerDelegate中的recordAudioDidCancelled回调会被触发
259 */
260- (void)cancelRecord;
261
262/**
263 * 获取录音分贝
264 *
265 */
266- (float)recordPeakPower;
267
268/**
269 * 获取录音分贝
270 *
271 */
272- (float)recordAveragePower;
273
274
275/**
276 * 语音转文字
277 *
278 * @param option 语音转文字选项
279 * @param result 完成回调
280 */
281- (void)transAudioToText:(NIMAudioToTextOption *)option
282 result:(NIMAudioToTextBlock)result;
283
284
285#pragma mark - common setting
286
287/**
288 * 禁止在IM 录制、播放音频时设置AVAudioSession, 防止影响其他音视频效果
289 * @param disabled YES则禁止重置
290 */
291- (void)disableResetAudioSession:(BOOL)disabled;
292
293/**
294 * 设置录制或者播放完成以后是否自动deactivate AVAudioSession
295 *
296 * @param deactivate 是否deactivate,默认为YES
297 */
298- (void)setDeactivateAudioSessionAfterComplete:(BOOL)deactivate;
299
300#pragma mark - delegates
301/**
302 * 添加多媒体委托
303 *
304 * @param delegate 多媒体委托
305 */
306- (void)addDelegate:(id<NIMMediaManagerDelegate>)delegate;
307
308/**
309 * 移除多媒体委托
310 *
311 * @param delegate 多媒体委托
312 */
313- (void)removeDelegate:(id<NIMMediaManagerDelegate>)delegate;
314
315
316@end
317
318
319NS_ASSUME_NONNULL_END
NIMAudioType
Definition: NIMMediaManagerProtocol.h:31
@ NIMAudioTypeAAC
Definition: NIMMediaManagerProtocol.h:35
@ NIMAudioTypeAMR
Definition: NIMMediaManagerProtocol.h:39
NIMAudioOutputDevice
Definition: NIMMediaManagerProtocol.h:16
@ NIMAudioOutputDeviceReceiver
Definition: NIMMediaManagerProtocol.h:20
@ NIMAudioOutputDeviceSpeaker
Definition: NIMMediaManagerProtocol.h:24
void(^ NIMAudioToTextBlock)(NSError *__nullable error, NSString *__nullable text)
Definition: NIMMediaManagerProtocol.h:49
Definition: NIMMediaManagerProtocol.h:56
NSString * filepath
Definition: NIMMediaManagerProtocol.h:67
NSString * url
Definition: NIMMediaManagerProtocol.h:61