混音
前提条件
从网络音源混音的能力依赖 RongRTCPlayer
插件。SDK 需要使用以下插件将网络文件下载后播放。如有需要,请集成以下插件:
// x.y.z,请填写具体的 SDK 版本号,新集成用户建议使用 SDK 和插件的最新版。
pod 'RongCloudRTC/RongRTCPlayer', '~> x.y.z' 融云 CDN + 混音网络资源文件(可选)
开始混音
混音功能支持将用户自定义的音频数据与本地麦克风采集的音频数据进行混合,加入房间并发布默认的音频流后调用 startMixingWithURL:playback:mixerMode:loopCount:
方法混音指定的音频文件。
- (BOOL)startMixingWithURL:(NSURL *)fileURL
playback:(BOOL)isPlay
mixerMode:(RCRTCMixerMode)mode
loopCount:(NSUInteger)count;
参数 | 类型 | 说明 |
---|---|---|
fileURL | NSURL | 本地文件或者网络资源 URL。注意,参数 fileURL 为网络资源时,在线资源混音需要依赖 RongRTCPlayer 插件。 |
isPlay | BOOL | 是否在本地播放 |
mode | RCRTCMixerMode | 混音方式 |
count | NSUInteger | 循环混音或者播放次数 |
混音成功后,返回 YES。
//NSURL *mediaUrl = [NSURL URLWithString:@"https://xxxx.mp3"];
NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
NSURL *mediaUrl = [NSURL fileURLWithPath:audioFilePath];
[[RCRTCAudioMixer sharedInstance] startMixingWithURL:mediaUrl
playback:YES
mixerMode:RCRTCMixerModeMixing
loopCount:NSUIntegerMax];
切换左右声道
提示
SDK 从 5.1.13 开始支持切换左右声道。仅支持在与本地文件混音时切换声道。不支持网络资源文件。
与本地文件混音时,可以调用 setAudioDualMonoMode
单独选择混音的左右声道。如未调用默认模式为使用立体声混音。
例如调用 setAudioDualMonoMode
设置为左声道混音时,SDK 会拷贝当前音频的左声道数据填充右声道,进而两个声道都是左声道数据,开始混音后用户听到的就是当前左声道混音的声音。您可以通过左右声道切换实现原唱、伴唱切换,以满足卡拉 OK 场景下的需求(通过声道切换原唱、伴唱要求音源支持,即原唱、伴唱音轨分别位于两个独立声道)。
/*!
设置混音声道模式
@param mode 声道模式 0 立体声混音, 1 左声道混音, 2 右声道混音
@discussion
只针对本地文件资源混音播放产生效果, 不支持网络资源的 url
Add from 5.1.13
@remarks 音频配置
@return 设置是否成功
*/
- (BOOL)setAudioDualMonoMode:(RCRTCAudioDualMonoMode)mode;
mode
为 SDK 提供的混音模式(RCRTCAudioDualMonoMode),支持选择左右声道或者立体声。
设置成功后返回 YES,设置即时生效。
RCRTCAudioDualMonoMode mode = RCRTCAudioDualMonoLeft;//RCRTCAudioDualMonoRight
[[RCRTCAudioMixer sharedInstance] setAudioDualMonoMode:mode]
控制混音状态(结束、暂停、恢复)
-
混音结束或结束混音时需要调用以下方法结束混音。
[[RCRTCAudioMixer sharedInstance] stop];
-
暂停混音
[[RCRTCAudioMixer sharedInstance] pause];
-
恢复混音
[[RCRTCAudioMixer sharedInstance] resume];
-
获取当前混音状态
if(RTCMixEngineStatusPlaying == [RCRTCAudioMixer sharedInstance].status) {
// 处理正在播放混音的逻辑
}