ベースのStreamingKitオーディオプレーヤー

StreamingKitシンプルなオーディオプレーヤーをベースサードパーティ製のフレームワーク

GitHubのオープンソースフレームワーク:https://github.com/tumtumtum/StreamingKit

主な機能

- 1、次の曲、一時停止、再生には、再生モード、操作のプログレスバーを切り替えます。

図に示すように。

 

  • プレイヤーパッケージSTKAudioPlayer

 

 

 

 

/ ** *シングルトン/ 
+(instanceType)shareInstance; 

/ *指定されたオーディオ再生する   
    オーディオの@paramのURLアドレス
* / 
- (無効)ym_playWithURL:(NSURL *)URLを; 

/ *一時停止* / 
- (無効)ym_pause。

/ **続ける* / 
- (無効)ym_resume; 

/ **エンド・再生* / 
- (無効)ym_stop; 

/ **指定された時間から再生を開始   
    再生を開始する期間の@param時間
* / 
- (無効)ym_seekToTime:(ダブル)時間;
  • STKAudioPlayerプロキシ方法
  • 演奏オーディオ開始
- (ボイド)audioPlayer:(STKAudioPlayer *)audioPlayer didStartPlayingQueueItemId:(NSObjectの*)queueItemId { 
    YMLog(@ "开始播放:%@"、queueItemId)。
}

 

  • 当一个项目已完成缓冲时引发(可能是也可能不是当前正在播放的项目)
  • 如果在播放器上调用seek,则同一项可能引发多次此事件

 

- (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);
}

 

  • 当发生意外且可能无法恢复的错误时引发(通常最好重新创建STKAudioPlauyer)
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer unexpectedError:(STKAudioPlayerErrorCode)errorCode {
  YMLog(@"播放错误:%@",@(errorCode));
}

 

  • 可选实现从STKAudioPlayer获取日志信息(内部用于调试)
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer logInfo:(NSString *)line {    
    YMLog(@"播放日志:%@",line);
}

 

  • 清除队列中的项时引发(通常是因为调用play、setDataSource或stop)
- (void)audioPlayer:(STKAudioPlayer *)audioPlayer didCancelQueuedItems:(NSArray *)queuedItems {    

}

 

  • 音频开始播放是定义了一个开始播放的block,这里主要用于音频开始播放的时候旋转动画

 

 

 

 

@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];//停止动画
    };
  • 需要时时更新音频的时长,进度,播放状态等一些信息,取出然后赋值到页面上,这里使用block回传数据 

 

 

 

 

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

 

おすすめ

転載: www.cnblogs.com/ljj-Andrew-519/p/11818862.html