在网上看到有人说AVplay就可以播放流媒体,便拿过来使用,,结果发现无论如何它都是要把MP3缓存完成之后才开始播放,,音频长的就要等好久,对于M4A 格式的还有好些,MP3就不行了,,这样体验非常差。于是在网上搜罗方法,,找到了FreeStreamer 库 可以实现边缓存边播放MP3文件,,网上资料比较少。。在这里大致做下总结。。我的代码写的并不好 只是给需要的做个参考 支持mp3和m4a格式 后面还有一篇DOUAudioStreamer 的总结 可以参考下
1.使用cocoapods 添加FreeStreamer库
pod 'FreeStreamer','~> 3.7.2'
2.#import <FSAudioStream.h>
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
// 开始接受远程控制 为添加到音频中心后台播放做准备
[[UIApplicationsharedApplication]beginReceivingRemoteControlEvents];
[selfbecomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
// 结束远程控制 为添加到音频中心后台播放做准备
[[UIApplicationsharedApplication]endReceivingRemoteControlEvents];
[selfresignFirstResponder];
}
// 重写父类成为响应者方法 为添加到音频中心后台播放做准备
- (BOOL)canBecomeFirstResponder {
returnYES;
}
#pragma mark 重写父类方法,接受外部事件的处理 为添加到音频中心后台播放做准备
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
if (receivedEvent.type ==UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) { //得到事件类型
caseUIEventSubtypeRemoteControlTogglePlayPause://暂停 ios6
self.play =YES;//调用你所在项目的暂停按钮的响应方法下面的也是如此
[selfplayAction];
break;
caseUIEventSubtypeRemoteControlPreviousTrack: //上一首
[selflastButtonAction];
break;
caseUIEventSubtypeRemoteControlNextTrack://下一首
[selfnextButtonAction];
break;
caseUIEventSubtypeRemoteControlPlay://播放
self.play =NO;//调用你所在项目的暂停按钮的响应方法下面的也是如此
[selfplayAction];
break;
caseUIEventSubtypeRemoteControlPause://暂停 ios7
self.play =YES;//调用你所在项目的暂停按钮的响应方法下面的也是如此
[selfplayAction];
break;
default:
break;
}
}
}
//Now Playing Center可以在锁屏界面展示音乐的信息,也达到增强用户体验的作用。
#pragma mark 传递信息到锁屏状态下此方法在播放歌曲与切换歌曲时调用即可