-
Notifications
You must be signed in to change notification settings - Fork 271
BGM
pengbin edited this page May 11, 2017
·
12 revisions
提供本地音乐播放的功能。
当前提供了两个背景音播放器:
使用bgmPlayer更轻量,提供了升降调功能, 但是只支持本地音乐文件的播放.
使用KSYMoviePlayerController,支持流媒体音乐。具体示例请参考KSYGPUBgmStreamerKit.m .
KSYMoviePlayerController详细参考文档,请见KSYMediaPlayer .
升降调功能是主播唱歌时伴奏的特效处理,即从低沉到高亢的一个过程,更适用于较专业的唱歌直播;金山云SDK支持-3至3从低沉到高亢的7个等级的调节,0为原始音效,具体等级可根据客户业务需求做自定义处理
- Kit类提供
@property (nonatomic, readonly) KSYBgmPlayer* bgmPlayer;
- 用户自定义本地音乐URL
NSString *testMp3 = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.mp3"];
- 用户自定义播放完成后回调
_kit.bgmPlayer.bgmFinishBlock = ^{
}
- 开始播放音乐,可以提供单曲循环模式
[_kit.bgmPlayer startPlayBgm:testMp3 isLoop:NO];
- 暂停音乐
[_kit.bgmPlayer pauseBgm];
- 暂停恢复
[_kit.bgmPlayer resumeBgm];
- 停止音乐
[_kit.bgmPlayer stopPlayBgm];
- 通过监听KSYAudioStateDidChangeNotification事件
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onAudioStateChange:)
name:KSYAudioStateDidChangeNotification
object:nil];
- bgmPlayerState属性标示当前播放状态
(void) onAudioStateChange:(NSNotification *)notification {
NSLog(@"bgmState:%ld %@", _bgmPlayer.bgmPlayerState, [_bgmPlayer getCurBgmStateName]);
}
- 取值从0.0~1.0;
@property (nonatomic, readonly) float bgmProcess;
- 取值从0.0~1.0;
@property (nonatomic, assign) double bgmVolume;
注意: 此音量为本地播放的音量, 比如主播听到的音量.
要调整推流后观众端听到的音量,请调整audiomixer的音量.
[_kit.audioMixer setMixVolume:_bgmVolS.value of:_kit.bgmTrack];
- 调用bgm时,传入错误string(比如歌曲地址不存在),返回值是YES; 答:背景音乐启动的API改成异步启动的了。所以除非特别严重的错误, 开始函数返回的都是YES。要判断歌曲是否播放成功, 可以通过响应事件回调来实现。
文件不存在会转为 KSYBgmPlayerStateError 状态
播放成功会转为 KSYBgmPlayerStateStarting -> KSYBgmPlayerStatePlaying
- bgmKit类提供
@property (nonatomic, strong) KSYMoviePlayerController *ksyBgmPlayer;
- 用户自定义本地音乐URL
NSString *testMp3 = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.mp3"];
- 开始播放音乐
[_bgmKit startPlayBgm:testMp3];
- 暂停音乐
[_bgmKit.ksyBgmPlayer pause];
- 暂停恢复
[_bgmKit.ksyBgmPlayer play];
- 停止音乐
[_bgmKit stopPlayBgm];
- 通过监听MPMoviePlayerPlaybackStateDidChangeNotification事件
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onKsyBgmPlayerStateChange:)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:nil];
- 当前播放状态
(void) onKsyBgmPlayerStateChange:(NSNotification *)notification {
NSLog(@"bgmStates:%@", [_bgmKit getCurBgmStateName]);
}
- 取值从0.0~1.0;
@property (nonatomic, readonly) float bgmProcess;
- 取值从0.0~1.0;
[_bgmKit.ksyBgmPlayer setVolume:vol rigthVolume:vol];