混音
本章节介绍混音相关的功能,通过阅读本章节你可以快速了解混音功能的调用方法和流程。混音是指在音视频通话和互动直播过程中,将本地的音频文件或者网络文件与本端采集的声音数据混音后发送出去,同时在本端播放出来的功能。
混音功能可以处理系统原生支持语音播放的音频文件类型,如 aac
、mp3
、mp4
和 wav
等。
该功能支持设置文件播放次数、发送音量和播放音量,支持通话中开始、暂停、恢复、更新及停止文件混音,获取混音文件总时长,混音文件当前播放时间,混音文件seek到传入时间。
混音流程
graph TB
K(开始)--> A
A[初始化混音 initWithFileURL] --> B[开始混音 startAudioMix]
B --> C[更新混音任务 updateAudioMix]
C --> D{中途结束混音吗}
D{中途结束混音吗} -->|YES| F[结束混音 stopAudioMix]
D{中途结束混音吗} -->|NO| E[混音完成回调 onAudioMixTaskCompleted]
F[结束混音 stopAudioMix]--> G(结束)
E[混音完成回调 onAudioMixTaskCompleted]--> G(结束)
实例化混音任务
- API介绍
混音任务的具体设置通过 NIMNetCallAudioFileMixTask
指定。
通过 numberOfLoops
指定该文件循环播放次数,负数表示无限循环,非负数表示总共播放 numberOfLoops + 1 次,可以实时更新,更新后重新计数。
通过 sendVolume
指定混音时的发送语音音量, 接受输入值为 0.0 到 1.0,可以实时更新。
通过 playbackVolume
指定混音时的播放语音音量, 接受输入值为 0.0 到 1.0,可以实时更新。
- API原型
@interface NIMNetCallAudioFileMixTask : NSObject
/**
初始化任务
@param url 语音文件 URL。只能播放系统原生支持语音播放的音频文件类型,如 aac、mp3、mp4 和 wav 等
@return 任务实例
*/
- (instancetype)initWithFileURL:(NSURL *)url;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
url | NSURL | 语音文件 URL。只能播放系统原生支持语音播放的音频文件类型,如 aac、mp3、mp4 和 wav 等 |
- 示例
实例化混音任务
NIMNetCallAudioFileMixTask *task = [[NIMNetCallAudioFileMixTask alloc] initWithFileURL:url];
task.sendVolume = sendVolume;
task.playbackVolume = playbackVolume;
开始文件混音任务
- API介绍
开始文件混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
开始混音任务
@param task 文件混音任务
@return 结果, 如果成功开始了, 返回 nil
@discussion 开始新的任务会结束正在进行中的任务
*/
- (nullable NSError *)startAudioMix:(NIMNetCallAudioFileMixTask *)task;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
task | NIMNetCallAudioFileMixTask | 文件混音任务 |
- 示例
//创建任务
NIMNetCallAudioFileMixTask *task = [[NIMNetCallAudioFileMixTask alloc] initWithFileURL:url];
task.sendVolume = sendVolume;
task.playbackVolume = playbackVolume;
//开始混音任务
[[NIMAVChatSDK sharedSDK].netCallManager startAudioMix:task];
获取当前进行中的混音任务
- API介绍
获取当前进行中的混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
获取当前进行中的混音任务
@return 混音任务. 如果没有当前任务则返回 nil
*/
- (nullable NIMNetCallAudioFileMixTask *)currentAudioMixTask;
@end
参数说明
无
示例
//获取当前进行中的混音任务
NIMNetCallAudioFileMixTask *task = [NIMAVChatSDK sharedSDK].netCallManager.currentAudioMixTask;
更新文件混音任务
- API介绍
更新文件混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
更新混音任务
@param task 文件混音任务
@return 结果, 如果成功开始了, 返回 nil
@discussion 可以更新循环播放次数和音量等
*/
- (nullable NSError *)updateAudioMix:(NIMNetCallAudioFileMixTask *)task;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
task | NIMNetCallAudioFileMixTask | 文件混音任务 |
- 示例
//获取当前任务
NIMNetCallAudioFileMixTask *task = [NIMAVChatSDK sharedSDK].netCallManager.currentAudioMixTask;
task.sendVolume = sendVolume;
task.playbackVolume = playbackVolume;
//更新混音任务
[[NIMAVChatSDK sharedSDK].netCallManager updateAudioMix:task];
暂停文件混音任务
- API介绍
暂停文件混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
暂停混音
@return 是否成功
*/
- (BOOL)pauseAudioMix;
@end
参数说明
无
示例
//暂停混音任务
[[NIMAVChatSDK sharedSDK].netCallManager pauseAudioMix];
恢复文件混音任务
- API介绍
恢复文件混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
恢复混音
@return 是否成功
*/
- (BOOL)resumeAudioMix;
@end
参数说明
无
示例
//恢复混音
[[NIMAVChatSDK sharedSDK].netCallManager resumeAudioMix];
停止文件混音任务
- API介绍
停止文件混音任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
结束混音
@return 是否成功
*/
- (BOOL)stopAudioMix;
@end
参数说明
无
示例
//停止文件混音任务
[[NIMAVChatSDK sharedSDK].netCallManager stopAudioMix];
混音文件总时长
- API介绍
混音文件总时长
- API原型
@protocol NIMNetCallManager <NSObject>
/**
混音文件总时长
@return 总时长 单位ms
*/
- (SInt64)fileTotalTime;
@end
参数说明
无
示例
//混音文件总时长
[[NIMAVChatSDK sharedSDK].netCallManager fileTotalTime];
混音文件当前播放时间
- API介绍
混音文件当前播放时间
- API原型
@protocol NIMNetCallManager <NSObject>
/**
混音文件当前播放时间
@return 当前播放时间 单位ms
*/
- (SInt64)currentPlayTime;
@end
参数说明
无
示例
//混音文件当前播放时间
[[NIMAVChatSDK sharedSDK].netCallManager currentPlayTime];
混音文件seek到传入时间
- API介绍
混音文件seek到传入时间
- API原型
@protocol NIMNetCallManager <NSObject>
/**
混音文件seek到传入时间
@param time 传入时间 单位ms
*/
- (void)seekToTime:(SInt64)time;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
time | SInt64 | 传入时间 单位ms |
- 示例
//混音文件seek到传入时间
[[NIMAVChatSDK sharedSDK].netCallManager seekToTime:time];
任务完成通知
- API介绍
任务完成通知
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
当前语音文件混音任务完成回调
*/
- (void)onAudioMixTaskCompleted;
@end
参数说明
无
示例
- (void)onAudioMixTaskCompleted
{
//刷新UI
}
开始文件音效任务
- API介绍
开始文件音效任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
播放音效,用于在混音时播放短暂的音效
@param task 音效任务。
@return 结果, 如果成功开始了, 返回 nil
*/
- (nullable NSError *)playSoundEffect:(NIMNetCallAudioFileMixTask *)task;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
task | NIMNetCallAudioFileMixTask | 文件音效任务 |
- 示例
//创建任务
NIMNetCallAudioFileMixTask *task = [[NIMNetCallAudioFileMixTask alloc] initWithFileURL:url];
task.sendVolume = sendVolume;
task.playbackVolume = playbackVolume;
task.needSend = YES;
//开始混音任务
[[NIMAVChatSDK sharedSDK].netCallManager playSoundEffect:task];
更新文件音效任务
- API介绍
更新文件音效任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
更新音效任务
@param task 文件音效任务
@return 结果, 如果成功开始了, 返回 nil
@discussion 可以更新循环播放次数和音量等
*/
- (nullable NSError *)updateSoundEffect:(NIMNetCallAudioFileMixTask *)task;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
task | NIMNetCallAudioFileMixTask | 文件音效任务 |
- 示例
//获取当前任务
NIMNetCallAudioFileMixTask *task = self.task;
task.sendVolume = sendVolume;
task.playbackVolume = playbackVolume;
//更新混音任务
[[NIMAVChatSDK sharedSDK].netCallManager updateAudioMix:task];
暂停文件音效任务
- API介绍
暂停文件音效任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
暂停音效
@return 是否成功
*/
- (BOOL)pauseSoundEffect;
@end
参数说明
无
示例
//暂停音效任务
[[NIMAVChatSDK sharedSDK].netCallManager pauseSoundEffect];
恢复文件音效任务
- API介绍
恢复文件音效任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
恢复音效
@return 是否成功
*/
- (BOOL)resumeSoundEffect;
@end
参数说明
无
示例
//恢复音效
[[NIMAVChatSDK sharedSDK].netCallManager resumeSoundEffect];
停止文件音效任务
- API介绍
停止文件音效任务
- API原型
@protocol NIMNetCallManager <NSObject>
/**
结束音效
@return 是否成功
*/
- (BOOL)stopSoundEffect;
@end
参数说明
无
示例
//停止文件音效任务
[[NIMAVChatSDK sharedSDK].netCallManager stopSoundEffect];
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×