GitHub开源框架:https://github.com/tumtumtum/StreamingKit
- 上一首、下一首、暂停、播放、切换播放模式、操作进度条等。
如图所示
/** 单例 */
+ (instancetype)shareInstance;
/** 播放指定音频
@param URL 音频地址
*/
- (void)ym_playWithURL:(NSURL *)URL;
/** 暂停 */
- (void)ym_pause;
/** 继续 */
- (void)ym_resume;
/** 结束播放 */
- (void)ym_stop;
/** 从指定时间开始播放
@param time 开始播放的时间
*/
- (void)ym_seekToTime:(double)time;
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer didStartPlayingQueueItemId:(NSObject *)queueItemId {
YMLog(@"开始播放 : %@",queueItemId);
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer didFinishBufferingSourceWithQueueItemId:(NSObject *)queueItemId {
YMLog(@"缓冲完成 : %@",queueItemId);
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer stateChanged:(STKAudioPlayerState)state previousState:(STKAudioPlayerState)previousState {
YMLog(@"播放器状态改变:%@",@(state));
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer didFinishPlayingQueueItemId:(NSObject *)queueItemId withReason:(STKAudioPlayerStopReason)stopReason andProgress:(double)progress andDuration:(double)duration {
YMLog(@"播放完成:%@",queueItemId);
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer unexpectedError:(STKAudioPlayerErrorCode)errorCode {
YMLog(@"播放错误:%@",@(errorCode));
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer logInfo:(NSString *)line {
YMLog(@"播放日志:%@",line);
}
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer didCancelQueuedItems:(NSArray *)queuedItems {
}
@property (nonatomic, copy, nullable) void(^startPlayBlock)(NSURL *URL);
player.startPlayBlock = ^(NSURL * _Nonnull URL) {
YMLog(@"开始播放:%@",URL);
[ws.iconView resumeRotate]; //开始转动封面
[ws.phonePlayerColView startPlayingMusic];
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTitle" object:nil userInfo:@{@"name":ws.phonePlayerColView.currentModel.name}];
//更新图片
ws.iconView.imageUrl = ws.phonePlayerColView.currentModel.imageUrl;
};
@property (nonatomic, copy, nullable) void(^finishPlayBlock)(NSURL *URL);
player.finishPlayBlock = ^(NSURL * _Nonnull URL) {
YMLog(@"播放完成:%@",URL);
[ws.iconView stopRotating];//停止动画
};
player.refreshBlock = ^(double duration, double progress, STKAudioPlayerState state, STKAudioPlayerErrorCode errorCode) {
YMLog(@"时长:%f",duration);
YMLog(@"进度:%f",progress);
YMLog(@"播放状态:%ld",(long)state);
YMLog(@"播放error:%ld",(long)errorCode);
}
Demo连接:https://github.com/AndrewLJJ/MusicPlayer
原文:https://www.cnblogs.com/ljj-Andrew-519/p/11818862.html