iOS Github开源框架 StreamingKit 网络音乐流播放器 简单上手(1)

  • StreamingKit

    • 由于苹果官方没有自带的音乐音乐流框架,如果需要播放网络流音频需求,自己写的话要了解很多音频解码之类的,这个讲解很详细http://msching.github.io 是网易云音乐的开发者,不过短时间很难啃下,所以推荐用第三方框架!
  • 第三方音频框架

  • StreamingKit 是我们要用的

  • GitHub:https://github.com/tumtumtum/StreamingKit

    DOUAudioStreamer 我们国内的豆瓣开源音乐播放器

    GitHub:https://github.com/douban/DOUAudioStreamer
    FreeStreamer

    GitHub:https://github.com/muhku/FreeStreamer

以上的Star 都在1000以上, 可以稳定使用

Jukebox 这个框架是Swift版本
GitHub: :https://github.com/teodorpatras/Jukebox


  • 一般我们需要一个播放音乐流的框架基本功能有
    1.可以播放流音乐(给一个网址URL就能播放)
    2.播放-暂停
    3.网速过慢,缓存音乐提示
    4.获取正在播放音频的时间和一首歌的总时间
    5.可以快进到想要播放的时间点

以上是一个框架最基本功能。


第0步,pod把StreamingKit导进来

上代码:

第一步
AppDelegate.m:

#import //记得导入自带框架
-(BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{   //1 初始化苹果播放器,用到一些播放模式。
    NSError* error;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
    [[AVAudioSession sharedInstance] setActive:YES error:&error];
    return YES;
}

第二步初始化一个控制器:


#import "ViewController.h"
#import "STKAudioPlayer.h"

@interface ViewController () 
{
    STKAudioPlayer* audioPlayer;//保存属性

    NSTimer* timer;

}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    ///初始化一个播放器
    audioPlayer = [[STKAudioPlayer alloc] init];
    ///给一个url字符串,并且开始播放音乐
    [audioPlayer play:@"http://mxd.766.com/sdo/music/data/3/m10.mp3"];
    ///设置代理
    audioPlayer.delegate = self;
    [self setupTimer];
}

//可以开一个定时器
- (void)setupTimer
{
    timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(tick) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}

//此方法每0.1秒被定时器调用一次
- (void)tick
{
    //获取当前播放音频的总时间时间
    int duration = audioPlayer.duration;
    NSLog(@"%d",duration);

    //当前播放的时间
    int progress = audioPlayer.progress;
    NSLog(@"%d",progress);

    if (audioPlayer.state == STKAudioPlayerStateBuffering){
        NSLog(@"缓冲了");
    }
        
}
//暂停和播放
- (void)playButtonPressed
{
    if (audioPlayer.state == STKAudioPlayerStatePaused)
    {   //恢复歌曲
        [audioPlayer resume];
    }
    else
    {   //暂停歌曲
        [audioPlayer pause];
    }
}
// 改变歌曲播放的进度
- (void)changedTime
{
    //手动让歌曲从第10秒开始播放音乐。
    [audioPlayer seekToTime:10];
}

/// 当播放器 状态发生改变的时候调用,  暂停-开始播放都会调用
- (void)audioPlayer:(STKAudioPlayer*)audioPlayer stateChanged:(STKAudioPlayerState)state previousState:(STKAudioPlayerState)previousState
{
}
/// 引发的意外和可能发生的不可恢复的错误,极少概率会调用。  就是此歌曲不能加载,或者url是不可用的
- (void)audioPlayer:(STKAudioPlayer*)audioPlayer unexpectedError:(STKAudioPlayerErrorCode)errorCode
{

}
///当一个项目开始播放调用
- (void)audioPlayer:(STKAudioPlayer*)audioPlayer didStartPlayingQueueItemId:(NSObject*)queueItemId
{
    
}
// 一般是歌曲快结束提前5秒调用
- (void)audioPlayer:(STKAudioPlayer*)audioPlayer didFinishBufferingSourceWithQueueItemId:(NSObject*)queueItemId
{
            
}
///当一个项目完成后,就调用
-(void) audioPlayer:(STKAudioPlayer*)audioPlayer didFinishPlayingQueueItemId:(NSObject*)queueItemId withReason:(STKAudioPlayerStopReason)stopReason andProgress:(double)progress andDuration:(double)duration
{

}

@end
以上已经把一个音乐的第三方框架基本的使用总结!

还有后台如何播放音乐?一张图片就明白
http://www.jianshu.com/p/db07eaab6258

如果有什么问题,可以微薄“梁同桌”私信我。留言都行

  • 看我那么可爱n(≧▽≦)n

  • 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
  • 个人博客: http://www.liangtongzhuo.com
  • iOS 个人写的app (如梦境ASMR)ASMR音乐

你可能感兴趣的:(iOS Github开源框架 StreamingKit 网络音乐流播放器 简单上手(1))