音乐文件播放
adjustAudioMixingPlayoutVolume:
调整本地播放的混音音量。
- (int)adjustAudioMixingPlayoutVolume:(NSInteger)volume NS_SWIFT_NAME(adjustAudioMixingPlayoutVolume(_:));
你需要在调用 startAudioMixing 方法,并收到 audioMixingStateChanged 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用该方法。
调用时机
你需要在调用 startAudioMixing 方法,并收到 audioMixingStateChanged 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用该方法。
参数
- volume
- 本地播放的混音音量。取值范围为 0 到 100,默认值为 100,表示原始音量。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
adjustAudioMixingPublishVolume:
调节用于发布的混音音量。
- (int)adjustAudioMixingPublishVolume:(NSInteger)volume NS_SWIFT_NAME(adjustAudioMixingPublishVolume(_:));
你可以调用该方法调节用于发布(发送给其他用户)的混音音量。
调用时机
在调用 startAudioMixing:loopback:cycle:startPos: 方法并收到 audioMixingStateChanged:reasonCode: 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用。
参数
- volume
- 用于本地播放的混音音量。取值范围为 0 到 100,默认值为 100,表示原始音量。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
adjustAudioMixingVolume:
调节混音时的音量。
- (int)adjustAudioMixingVolume:(NSInteger)volume NS_SWIFT_NAME(adjustAudioMixingVolume(_:));
你可以通过该方法在本地客户端和远端客户端调节混音音量。
调用时机
请在调用 startAudioMixing:loopback:cycle:startPos: 方法之后调用该方法。
参数
- volume
- 混音音量。取值范围为 0 到 100。默认值为 100,表示原始音量。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
getAudioMixingCurrentPosition
获取当前混音的播放位置(毫秒)。
- (int)getAudioMixingCurrentPosition NS_SWIFT_NAME(getAudioMixingCurrentPosition());
获取音频混音的播放位置(毫秒)。
- 你需要在调用 startAudioMixing:loopback:cycle:startPos: 并收到
audioMixingStateChanged回调(AgoraAudioMixingStateTypePlaying)后调用此方法。 - 如果你需要多次调用 getAudioMixingCurrentPosition,请确保两次调用之间的时间间隔大于 500 毫秒。
返回值
- ≥ 0:方法调用成功,返回当前混音的播放位置(毫秒)。返回 0 表示当前音乐文件尚未开始播放。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
getAudioMixingDuration
获取音频文件的混音时长(毫秒)。
- (int)getAudioMixingDuration NS_SWIFT_NAME(getAudioMixingDuration());
调用时机
在调用 startAudioMixing:loopback:cycle:startPos: 方法并收到 audioMixingStateChanged 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用该方法。
返回值
- ≥ 0:方法调用成功,返回音频混音的时长(毫秒)。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
getAudioMixingPlayoutVolume
获取本地播放的混音音量。
- (int)getAudioMixingPlayoutVolume NS_SWIFT_NAME(getAudioMixingPlayoutVolume());
你可以调用此方法获取混音音频文件的本地播放音量,有助于排查与音量相关的问题。
调用时机
请在调用 startAudioMixing:loopback:cycle:startPos: 方法并收到 audioMixingStateChanged 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
getAudioMixingPublishVolume
getAudioTrackCount
获取当前音乐文件的音轨索引。
- (int)getAudioTrackCount NS_SWIFT_NAME(getAudioTrackCount());
AgoraAudioMixingStateTypePlaying)后调用此方法。返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
pauseAudioMixing
暂停播放和混音音乐文件。
- (int)pauseAudioMixing NS_SWIFT_NAME(pauseAudioMixing());
调用 startAudioMixing 播放音乐文件后,你可以调用该方法暂停播放。若需停止播放,请调用 stopAudioMixing。
调用时机
请在加入频道后调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
resumeAudioMixing
恢复播放并混音音乐文件。
- (int)resumeAudioMixing NS_SWIFT_NAME(resumeAudioMixing());
调用 pauseAudioMixing 后,你可以调用此方法恢复播放。
调用时机
请在加入频道后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
selectAudioTrack:
选择用于播放的音轨。
- (int)selectAudioTrack:(NSInteger)index NS_SWIFT_NAME(selectAudioTrack(_:));
获取音频文件的音轨索引后,可以调用该方法指定任意音轨进行播放。例如,如果多音轨文件的不同音轨存储了不同语言的歌曲,可以调用该方法设置播放语言。
- 支持的音频文件格式,详见声网 RTC SDK 支持哪些格式的音频文件。
- 需要在调用
startAudioMixing并收到audioMixingStateChanged回调(状态为AgoraAudioMixingStateTypePlaying)后调用该方法。
参数
- index
- 你想要指定的音轨索引。该值应大于等于 0 且小于 getAudioTrackCount 返回的值。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
selectMultiAudioTrack:publishTrackIndex:
分别选择要在本地设备播放和发布到频道的音轨。
- (int)selectMultiAudioTrack:(NSInteger)playoutTrackIndex publishTrackIndex:(NSInteger)publishTrackIndex NS_SWIFT_NAME(selectMultiAudioTrack(_:publishTrackIndex:));
调用该方法可分别设置要在本地设备上播放和发布到频道的音轨。在调用该方法前,需要先调用 openWithMediaSource: 打开媒体文件,并在 AgoraMediaSource 中将 enableMultiAudioTrack 设置为 YES。
适用场景
该方法适用于例如 KTV 场景:主持人可以选择在本地播放原唱音轨,同时将伴奏音轨发布到频道。
参数
- playoutTrackIndex
- 用于本地播放的音轨索引。你可以通过 getStreamByIndex: 获取该索引。
- publishTrackIndex
- 要发布到频道中的音轨索引。你可以通过 getStreamByIndex: 获取该索引。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setAudioMixingDualMonoMode:
设置当前音频文件的声道模式。
- (int)setAudioMixingDualMonoMode:(AgoraAudioMixingDualMonoMode)mode NS_SWIFT_NAME(setAudioMixingDualMonoMode(_:));
- 如果你只想听伴奏,可以将声道模式设置为左声道模式。
- 如果你想同时听到伴奏和原唱人声,可以将声道模式设置为混合模式。
适用场景
- 如果你只想听到伴奏,调用该方法将声道模式设置为左声道模式。
- 如果你需要同时听到伴奏和原唱人声,调用该方法将声道模式设置为混合模式。
调用时机
在调用 startAudioMixing:loopback:cycle:startPos: 方法并收到 audioMixingStateChanged:reasonCode:(AgoraAudioMixingStateTypePlaying)回调后调用该方法。
参数
- mode
- 声道模式。详见 AgoraAudioMixingDualMonoMode。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setAudioMixingPitch:
设置本地音乐文件的音调。
- (int)setAudioMixingPitch:(NSInteger)pitch NS_SWIFT_NAME(setAudioMixingPitch(_:));
调用该方法可在本地音乐文件与本地人声混音时,仅调整本地音乐文件的音调。
调用时机
你需要在调用 startAudioMixing:loopback:cycle:startPos: 并收到 audioMixingStateChanged:reasonCode: 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用该方法。
参数
- pitch
- 按半音阶设置本地音乐文件的音调(默认值为 0,表示保持原始音调)。取值范围为 -12 到 12,相邻两个值之间的音调差为一个半音。该参数的绝对值越大,本地音乐文件的音调越高或越低。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setAudioMixingPlaybackSpeed:
设置当前音频文件的播放速度。
- (int)setAudioMixingPlaybackSpeed:(NSInteger)speed NS_SWIFT_NAME(setAudioMixingPlaybackSpeed(_:));
请在调用 startAudioMixing:loopback:cycle:startPos: 并收到 audioMixingStateChanged:reasonCode: 回调报告状态为 AgoraAudioMixingStateTypePlaying 后调用此方法。
参数
- speed
- 播放速度。声网建议设置为 50 到 400 之间的值,定义如下:
- 50:原始速度的一半。
- 100:原始速度。
- 400:原始速度的 4 倍。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setAudioMixingPosition:
设置混音的播放位置。
- (int)setAudioMixingPosition:(NSInteger)pos NS_SWIFT_NAME(setAudioMixingPosition(_:));
你可以调用该方法将音乐文件的播放位置设置为指定的起始位置。
调用时机
请在调用 startAudioMixing:loopback:cycle:startPos: 方法并收到 audioMixingStateChanged:reasonCode: 回调(状态为 AgoraAudioMixingStateTypePlaying)后调用该方法。
参数
- pos
- 播放位置(单位为毫秒)。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
startAudioMixing:loopback:cycle:
开始播放音乐文件。
- (int)startAudioMixing:(NSString * _Nonnull)filePath
loopback:(BOOL)loopback
cycle:(NSInteger)cycle NS_SWIFT_NAME(startAudioMixing(_:loopback:cycle:));
关于该方法支持的音频文件格式,详见声网 RTC SDK 支持哪些音频文件格式。如果本地音乐文件不存在、SDK 不支持该文件格式,或 SDK 无法访问音乐文件的 URL,SDK 会返回 AgoraAudioMixingReasonCanNotOpen。
- 如果你调用该方法播放短音效文件,可能会导致播放失败。声网建议使用 playEffect:filePath:loopCount:pitch:pan:gain:publish:startPos: 方法播放此类文件。
- 如果你需要多次调用该方法,请确保两次调用之间的时间间隔大于 500 毫秒。
调用时机
你可以在加入频道前或加入频道后调用该方法。
参数
- filePath
- 文件路径:
- iOS 或 macOS:音频文件的绝对路径或 URL 地址(包括文件名后缀)。例如:/var/mobile/Containers/Data/audio.mp4。
- loopback
- 是否只在本地客户端播放音乐文件:
- YES:只在本地客户端播放音乐文件,只有本地用户可以听到音乐。
- NO:将音乐文件发布到远端客户端,本地用户和远端用户都可以听到音乐。
- cycle
- 音乐文件的播放次数:
- > 0:播放的次数。例如,1 表示播放 1 次。
- -1:无限循环播放该音频文件。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -3:SDK 尚未就绪。
- 音频模块未启用。
- 程序未完成。
- AgoraRtcEngineKit 初始化失败。请重新初始化 AgoraRtcEngineKit。
startAudioMixing:loopback:cycle:startPos:
开始播放音乐文件。
- (int)startAudioMixing:(NSString * _Nonnull)filePath
loopback:(BOOL)loopback
cycle:(NSInteger)cycle
startPos:(NSInteger)startPos NS_SWIFT_NAME(startAudioMixing(_:loopback:cycle:startPos:));
关于该方法支持的音频文件格式,详见声网 RTC SDK 支持哪些音频文件格式。如果本地音乐文件不存在、SDK 不支持该文件格式,或无法访问音乐文件的 URL,SDK 会返回 AgoraAudioMixingReasonCanNotOpen。
- 如果你调用该方法播放短音效文件,可能会遇到播放失败的情况。声网建议使用 playEffect:filePath:loopCount:pitch:pan:gain:publish:startPos: 方法播放此类文件。
- 如果需要多次调用该方法,确保两次调用之间的时间间隔大于 500 毫秒。
调用时机
你可以在加入频道前或加入频道后调用该方法。
相关回调
成功调用该方法后,SDK 会触发 rtcEngine:audioMixingStateChanged:reasonCode:(AgoraAudioMixingStateTypePlaying)回调。当音频混音文件播放结束时,SDK 会在本地客户端触发 rtcEngine:audioMixingStateChanged:reasonCode:(AgoraAudioMixingStateTypeStopped)回调。
参数
- filePath
- 文件路径:
- iOS 或 macOS:音频文件的绝对路径或 URL 地址(包括文件名后缀)。例如:/var/mobile/Containers/Data/audio.mp4。
- loopback
- 是否只在本地客户端播放音乐文件:
- YES:只在本地客户端播放音乐文件,只有本地用户可以听到音乐。
- NO:将音乐文件发布到远端客户端,本地用户和远端用户都可以听到音乐。
- cycle
- 音乐文件的播放次数。
- > 0:播放的次数。例如,1 表示播放 1 次。
- -1:无限循环播放音频文件。
- startPos
- 音乐文件的播放起始位置(单位为毫秒)。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -1:发生通用错误(无明确原因)。
- -2:参数无效。
- -3:SDK 尚未就绪。
- 音频模块未启用。
- 程序未完整。
- AgoraRtcEngineKit 初始化失败。请重新初始化 AgoraRtcEngineKit。
stopAudioMixing
停止播放音乐文件。
- (int)stopAudioMixing NS_SWIFT_NAME(stopAudioMixing());
调用 startAudioMixing 播放音乐文件后,可以调用该方法停止播放。如果只需要暂停播放,请调用 pauseAudioMixing。
调用时机
请在加入频道后调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
rtcEngineLocalAudioMixingDidFinish:
本地音乐文件播放结束时的回调。
- (void)rtcEngineLocalAudioMixingDidFinish:(AgoraRtcEngineKit * _Nonnull)engine NS_SWIFT_NAME(rtcEngineLocalAudioMixingDidFinish(_:)) __deprecated_msg("Use rtcEngine:audioMixingStateChanged:reasonCode: instead");
audioMixingStateChanged。调用 startAudioMixing 播放本地音乐文件后,当播放结束时会触发该回调。如果调用失败,会返回错误码 WARN_AUDIO_MIXING_OPEN_ERROR。
触发时机
调用 startAudioMixing 播放本地音乐文件后,当播放结束时触发。
参数
- engine
rtcEngine:audioMixingPositionChanged:
报告音乐文件的播放进度。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine audioMixingPositionChanged:(NSInteger)position NS_SWIFT_NAME(rtcEngine(_:audioMixingPositionChanged:));
你调用 startAudioMixing:loopback:cycle:startPos: 方法播放音乐文件后,SDK 每两秒触发一次该回调,报告音乐文件的播放进度。
触发时机
你调用 startAudioMixing:loopback:cycle:startPos: 方法播放音乐文件后,SDK 每两秒触发一次该回调。
参数
- engine
- position
- 播放进度,单位为毫秒。
rtcEngine:audioMixingStateChanged:reasonCode:
音乐文件播放状态发生变化回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine audioMixingStateChanged:(AgoraAudioMixingStateType)state
reasonCode:(AgoraAudioMixingReasonCode)reasonCode NS_SWIFT_NAME(rtcEngine(_:audioMixingStateChanged:reasonCode:));
该回调在音乐文件的播放状态发生变化时触发,并报告当前的状态和错误码。
触发时机
该回调在音乐文件的播放状态发生变化时被触发。
参数
- engine
- state
- 音乐文件的播放状态,详见 AgoraAudioMixingStateType。
- reasonCode
- 错误码,详见 AgoraAudioMixingReasonCode。