human: 如何处理七牛云的实时音视频QNAudioMusicMixer

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > iOS >QNAudioMusicMixer

#  QNAudioMusicMixer

最近更新时间: 2023-10-20 19:39:46

背景音乐混音类，提供了控制背景音乐混音的一系列方法。

> 1\. 当前支持基于
> [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/8855/QNMicrophoneAudioTrack-iOS) 和
> [QNCustomAudioTrack](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/8856/QNCustomAudioTrack-iOS) 的背景音乐混音操作
>
> 2\. 注意调用的时机，加入房间并且成功发布后混音才会生效
>
> 3\. 通过
> [QNRTC.createAudioEffectMixer](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/undefined) 创建
> [QNAudioMusicMixer](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11930/QNAudioMusicMixer-iOS) 实例对象, 使用
> [audioTrack.addAudioFilter](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/undefined) 将 musicMixer 对象添加到 audioTrack 中
>
> 4\. 背景音乐混音仅支持同时混合一路背景音乐，若需要切换背景音乐，请重新调用
> [QNRTC.createAudioMusicMixer](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/8834) 创建本类的实例即可
>
> 5\. 若您希望在混合背景音乐的同时添加音效，可参考音效混音接口
> [QNAudioEffectMixer](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11928/QNAudioEffectMixer-iOS)

Index

Core Methods

  * getDuration
  * setPublishEnabled
  * isPublishEnabled
  * setMixingVolume
  * getMixingVolume
  * setMusicVolume
  * getMusicVolume
  * setStartPosition
  * getStartPosition
  * getCurrentPosition
  * start[1/2]
  * start[2/2]
  * stop
  * pause
  * resume
  * seekTo

Core Methods

getDuration

  * \+ (int64_t)getDuration:(NSString *)filePath
  * 获取指定音频文件的总时长

> 文件路径支持本地路径以及在线文件
>
> 音频格式支持 aac、mp3、mp4、wav、m4r、caf、ogg、opus、m4a、flac

> 该接口为同步方法，对于在线音频文件，获取时长会存在一定的耗时，需注意调用接口所在的线程

Parameters

    * filePath: NSString 

文件路径

Returns int64_t，单位 ms

setPublishEnabled

  * \- (void)setPublishEnabled:(BOOL)publishEnabled;
  * 设置某音源音频是否发布到远端

Parameters

    * publishEnabled: BOOL 

是否发布到远端

isPublishEnabled

  * \- (BOOL)isPublishEnabled;
  * 获取某音源音频是否发布到远端

Returns BOOL

setMixingVolume

  * \- (void)setMixingVolume:(float)volume;
  * 设置背景音语参与混音的音量，范围 0 ～ 1.0

> 该接口已废弃，请使用
> [QNAudioMusicMixer.setMusicVolume](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11930)

Parameters

    * volume: float 

音量大小

getMixingVolume

  * \- (float)getMixingVolume;
  * 获取背景音乐参与混音的音量

> 该接口已废弃，请使用
> [QNAudioMusicMixer.getMusicVolume](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11930)

Returns float，范围 0 ～ 1.0

setMusicVolume

  * \- (void)setMusicVolume:(float)volume;
  * 设置背景音语参与混音的音量，范围 0 ～ 1.0

> 若想修改混音中麦克风采集音频的音量，可通过
> [QNMicrophoneAudioTrack.setVolume](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/8855) 接口实现

Parameters

    * volume: float 

音量大小

getMusicVolume

  * \- (float)getMusicVolume;
  * 获取背景音乐参与混音的音量

Returns float，范围 0 ～ 1.0

setStartPosition

  * \- (void)setStartPosition:(int64_t)position;
  * 设置参与混音的起始位置，单位 ms

Parameters

    * position: int64_t 

起始位置

getStartPosition

  * \- (int64_t)getStartPosition;
  * 获取参与混音的起始位置

Returns int64_t，单位 ms

getCurrentPosition

  * \- (int64_t)getCurrentPosition;
  * 获取当前时长

Returns int64_t，单位 ms

start[1/2]

  * \- (BOOL)start;
  * 开始混音，默认只混一次

> 触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStateMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)
>
> 触发
> [QNAudioMusicMixerDelegate.didMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调当前混音进度

Returns BOOL 接口是否调用成功

start[2/2]

  * \- (BOOL)start:(int)loopCount;
  * 指定循环次数开始混音

> -1 为无限循环，0 为不混音，大于 0 为实际循环次数
>
> 触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStateMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)
>
> 触发
> [QNAudioMusicMixerDelegate.didMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调当前混音进度

Parameters

    * loopCount: int 

循环次数

Returns BOOL 接口是否调用成功

stop

  * \- (BOOL)stop;
  * 停止混音

> 触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStateStopped](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)

Returns BOOL 接口是否调用成功

pause

  * \- (BOOL)pause;
  * 暂停混音

> 触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStatePaused](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)

Returns BOOL 接口是否调用成功

resume

  * \- (BOOL)resume;
  * 恢复混音

> 触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStateMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)

Returns BOOL 接口是否调用成功

seekTo

  * \- (BOOL)seekTo:(int64_t)position;
  * 跳到指定位置混音，单位 ms

> seek 成功会触发
> [QNAudioMusicMixerDelegate.didStateChanged](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/11931) 回调混音状态为
> [QNAudioMusicMixerStateMixing](https://developer.qiniu.com/rtc/11930/QNAudioMusicMixer-
> iOS/9254)

Returns BOOL 接口是否调用成功

以上内容是否对您有帮助？