混音
集成混音插件
混音功能包含在 RTCLib SDK 中。如需从网络音源混音,需要额外集成 RongRTCPlayer
插件。在导入 SDK 前,您可以前往 融云官网 SDK 下载页面 确认当前最新版本号。
通过 CocoaPods 管理依赖 (推荐)
-
如果您的项目中没有
Podfile
文件,您需要打开终端并进入到项目的根目录,在终端中运行pod init
命令,之后系统会自动创建一个默认的Podfile
文件,在项目中的Podfile
文件中添加如下内容:ruby# 基础混音功能(包含在 RTCLib 中)
pod 'RongCloudRTC', '~> x.y.z'
# 网络音源混音插件(可选)
pod 'RongCloudRTC/RongRTCPlayer', '~> x.y.z'提示- 网络音源混音插件会自动依赖下载对应版本的 RTCLib 库,一般不需要手动指定。
x.y.z
代表 RTCLib 具体的版本号,您可以在融云官网 SDK 下载页面或在终端中通过先执行pod repo update
,再执行pod search RongCloudRTC
命令在 CocoaPods 仓库查询 RTCLib 最新的版本。
-
打开终端并进入到
Podfile
文件所在的目录,在终端中运行以下命令:shellpod install
提示如果终端中出现类似
CocoaPods could not find compatible versions for
等找不到相关版本的报错,可先在终端中执行pod repo update
命令,再执行pod install
命令。 -
通过 Xcode 打开项目目录下的
xcworkspace
文件加载工程。
手动集成
-
前往 融云官网 SDK 下载页面,下载 RTCLib SDK 和混音插件:
-
导入以下内容:
RongRTCLib.xcframework
(基础混音功能)RongRTCPlayer.xcframework
(网络音源混音,可选)
-
修改您的项目配置。在
General
→Frameworks, Libraries, and Embedded Binaries
中,将手动导入的 RTCLib SDK 所有的 Framework 全部改为Embed & Sign
。 -
请将工程中 Target > Build Settings > Other Linker Flags 在此项中添加 -ObjC。为避免编译失败,请勿使用 -all_load 和 -force_load。
开始混音
混音功能支持将用户自定义的音频数据与本地麦克风采集的音频数据进行混合。加入房间并发布默认的 音频流后,调用 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,失败返回 NO。
代码示例
#import <RongRTCLib/RongRTCLib.h>
// 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 场景下的需求。通过声道切换原唱、伴唱要求音源支持,即原唱、伴唱音轨分别位于两个独立声道。
接口原型
- (BOOL)setAudioDualMonoMode:(RCRTCAudioDualMonoMode)mode;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
mode | [RCRTCAudioDualMonoMode] | 是 | 声道模式:0 立体声混音,1 左声道混音,2 右声道混音 |
返回值
设置成功返回 YES,失败返回 NO。设置即时生效。
代码示例
#import <RongRTCLib/RongRTCLib.h>
RCRTCAudioDualMonoMode mode = RCRTCAudioDualMonoLeft; // RCRTCAudioDualMonoRight
[[RCRTCAudioMixer sharedInstance] setAudioDualMonoMode:mode];
控制混音状态(结束、暂停、恢复)
-
结束混音时需要调用以下方法。
Objective C[[RCRTCAudioMixer sharedInstance] stop];
-
暂停混音
Objective C[[RCRTCAudioMixer sharedInstance] pause];