场景
公司APP内需要一个边下边播的音频播放器。
整理思路
WTAudioPlayer是基于唱吧开源的KTVHTTPCache,在业务逻辑层对AVPlayer播放器的封装。KTVHTTPCache这个工具解决了缓存的问题,实现的原理是开启了本地服务器去代理每一个音频下载的请求,这样即可管理每个音频文件的下载进度。
特征介绍
WTAudioPlayer:该类是对外的播放器类,其中有单例的类方法,也有实例的类方法。可以一个播放器切换多个资源进行播放。目前实现了播放,暂停,续播,停止播放。
AudioURLModel:该类是音频链接模型,里面记录了链接类型和该链接对应的音频的播放状态。最重要的是,该模型记录了音频链接在哪个类中被播放过,当播放器停止播放的时候,会把那些已销毁的类播过的音频资源给释放了,减少内存占用。
PauseTimeModel:该类是用来记录音频文件被暂停时候的时间,这样即可在下次续播的时候,继续上次暂停的时间点继续播放。
使用方法
播放:
[[WTAudioPlayer audioPlayer] playWithUrlString:_musicURLStr isLocalFileURL:NO forClass:[self class]];
暂停:
[[WTAudioPlayer audioPlayer] pauseWithUrlString:_musicURLStr];
续播:
[[WTAudioPlayer audioPlayer] resumeWithUrlString:_musicURLStr];
停止:
[[WTAudioPlayer audioPlayer] stopWithUrlString:_musicURLStr];
如果使用的是单例,在释放音乐列表的对象的时候,一定得记得清理不会再次播放的音频资源。清理不会再次播放的音乐资源的方法如下
[self.audioPlayer releaseAudioPlayerForClass:[self class]];
参考资料
KTVHTTPCache