場景
公司APP內(nèi)需要一個邊下邊播的音頻播放器限番。
整理思路
WTAudioPlayer是基于唱吧開源的KTVHTTPCache肌索,在業(yè)務(wù)邏輯層對AVPlayer播放器的封裝嵌溢。KTVHTTPCache這個工具解決了緩存的問題五辽,實現(xiàn)的原理是開啟了本地服務(wù)器去代理每一個音頻下載的請求办斑,這樣即可管理每個音頻文件的下載進度。
特征介紹
WTAudioPlayer:該類是對外的播放器類杆逗,其中有單例的類方法乡翅,也有實例的類方法∷栌可以一個播放器切換多個資源進行播放峦朗。目前實現(xiàn)了播放,暫停排龄,續(xù)播波势,停止播放。
AudioURLModel:該類是音頻鏈接模型橄维,里面記錄了鏈接類型和該鏈接對應(yīng)的音頻的播放狀態(tài)尺铣。最重要的是,該模型記錄了音頻鏈接在哪個類中被播放過争舞,當(dāng)播放器停止播放的時候凛忿,會把那些已銷毀的類播過的音頻資源給釋放了,減少內(nèi)存占用竞川。
PauseTimeModel:該類是用來記錄音頻文件被暫停時候的時間店溢,這樣即可在下次續(xù)播的時候,繼續(xù)上次暫停的時間點繼續(xù)播放委乌。
使用方法
播放:
?[[WTAudioPlayer audioPlayer] playWithUrlString:_musicURLStr isLocalFileURL:NO forClass:[self class]];
暫停:
[[WTAudioPlayer audioPlayer] pauseWithUrlString:_musicURLStr];
續(xù)播:
[[WTAudioPlayer audioPlayer] resumeWithUrlString:_musicURLStr];
停止:
[[WTAudioPlayer audioPlayer] stopWithUrlString:_musicURLStr];
如果使用的是單例床牧,在釋放音樂列表的對象的時候,一定得記得清理不會再次播放的音頻資源遭贸。清理不會再次播放的音樂資源的方法如下
[self.audioPlayer releaseAudioPlayerForClass:[self class]];
參考資料
KTVHTTPCache