Skip to content
pengbin edited this page May 11, 2017 · 12 revisions

一、介绍

提供本地音乐播放的功能。

当前提供了两个背景音播放器:

使用bgmPlayer更轻量,提供了升降调功能, 但是只支持本地音乐文件的播放.

使用KSYMoviePlayerController,支持流媒体音乐。具体示例请参考KSYGPUBgmStreamerKit.m .

KSYMoviePlayerController详细参考文档,请见KSYMediaPlayer .

二、KSYBgmPlayer 说明

2.1 升降调

升降调功能是主播唱歌时伴奏的特效处理,即从低沉到高亢的一个过程,更适用于较专业的唱歌直播;金山云SDK支持-3至3从低沉到高亢的7个等级的调节,0为原始音效,具体等级可根据客户业务需求做自定义处理

2.2 Kit类接口说明

  • 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];

2.3 状态监控

  • 通过监听KSYAudioStateDidChangeNotification事件
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(onAudioStateChange:)
                                                 name:KSYAudioStateDidChangeNotification
                                               object:nil];
  • bgmPlayerState属性标示当前播放状态
(void) onAudioStateChange:(NSNotification *)notification {
    NSLog(@"bgmState:%ld %@", _bgmPlayer.bgmPlayerState, [_bgmPlayer getCurBgmStateName]);
}

2.4 播放进度

  • 取值从0.0~1.0;
@property (nonatomic, readonly) float bgmProcess;

2.5 音量

  • 取值从0.0~1.0;
@property (nonatomic, assign) double bgmVolume;

注意: 此音量为本地播放的音量, 比如主播听到的音量.

要调整推流后观众端听到的音量,请调整audiomixer的音量.

[_kit.audioMixer setMixVolume:_bgmVolS.value of:_kit.bgmTrack];

2.6 FAQ

  • 调用bgm时,传入错误string(比如歌曲地址不存在),返回值是YES; 答:背景音乐启动的API改成异步启动的了。所以除非特别严重的错误, 开始函数返回的都是YES。要判断歌曲是否播放成功, 可以通过响应事件回调来实现。

文件不存在会转为 KSYBgmPlayerStateError 状态
播放成功会转为 KSYBgmPlayerStateStarting -> KSYBgmPlayerStatePlaying

三、ksyPlayer基本步骤

3.1 bgmKit类接口说明

  • 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];

3.2 状态监控

  • 通过监听MPMoviePlayerPlaybackStateDidChangeNotification事件
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(onKsyBgmPlayerStateChange:)
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:nil];
  • 当前播放状态
(void) onKsyBgmPlayerStateChange:(NSNotification *)notification {
    NSLog(@"bgmStates:%@", [_bgmKit getCurBgmStateName]);
}

3.3 播放进度

  • 取值从0.0~1.0;
@property (nonatomic, readonly) float bgmProcess;

3.4 音量

  • 取值从0.0~1.0;
 [_bgmKit.ksyBgmPlayer setVolume:vol rigthVolume:vol];

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally