AVAudioPlayer 类实现本地音乐的播放
1、初始化播放器
#pragma mark - 初始化播放器
-(AVAudioPlayer *)musicPlayer{
if(!_musicPlayer){
NSError * error;
// 加载本地的音乐资源
NSURL * url = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"qinghua" ofType:@"mp3"]];
// 初始化
_musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
// 设置代理
_musicPlayer.delegate = self;
// 获取系统的声音的配置
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
// 获取系统音量
CGFloat currentVol = audioSession.outputVolume;
// 设置播放音量
_musicPlayer.volume = currentVol;
// 设置播放速率
_musicPlayer.rate = 1.0;
//设置播放次数,负数代表着无限循环
_musicPlayer.numberOfLoops = -1;
// 预加载资源
[_musicPlayer prepareToPlay];
}
return _musicPlayer;
}
2、实现 AVAudioPlayerDelegate 的代理方法,获取进度
-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{
NSLog(@"播放出错!");
}
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"播放完成!");
}
3、调用播放的播放的方法
- (void)viewDidLoad {
[super viewDidLoad];
// 调用播放音乐的方法
[self.musicPlayer play];
// 调用暂停的方法
[self.musicPlayer pause];
}
AVPlayer 类实现网络音乐的播放
1、初始化AVPlayer音乐播放器
#pragma mark - 初始化播放器
-(AVPlayer *)player{
if (_player) {
NSURL * url = [NSURL fileURLWithPath:_songModel.urlPath];
_songItem = [[AVPlayerItem alloc] initWithURL:url];
_player = [[AVPlayer alloc] initWithPlayerItem:_songItem];
}
return _player;
}
2、调用开始播放或者暂停播放的方法
#pragma mark - 开始播放
-(void)paly{
[self.player play];
}
#pragma mark - 暂停播放
-(void)pause{
[self.player pause];
}
3、监控播放的进度
[self.player addPeriodicTimeObserverForInterval:CMTimeMake(0.1*30, 30) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
// 操作代码
}
以上仅仅是列出了初始化播放器、播放、暂停等简单功能,其实这两个类可以满足普通的音乐播放的需求。如果你感兴趣的话,你还可以去研究一下音乐进度的控制、循环播放、歌词展示、后天播放、Now Playing Center以及Remote Control控制音乐的播放等。