美文网首页iOS开发iOS学习笔记iOS Developer
iOS使用AVPlayer自定义音频播放器

iOS使用AVPlayer自定义音频播放器

作者: 九剑仙 | 来源:发表于2017-04-17 22:15 被阅读589次

下一篇:iOS使用AVPlayer自定义视频播放器

1. 音频播放的第一种方式,AVAudioPlayer:

只能播放已缓存到本地的音频,功能相对简单,实现起来也很方便,不做重点讲解,代码如下:
#import <AVFoundation/AVFoundation.h>

/*
 使用时,必须创建全局变量
 */
@interface LLAudioPlayer : AVAudioPlayer

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
- (id)initWithData:(NSData *)data error:(NSError **)outError;
- (void)startPlay;
- (void)pausePlay;
- (void)stopPlay;

@end

#import "LLAudioPlayer.h"

@interface LLAudioPlayer ()

@property (nonatomic, strong) AVAudioSession     *audioSession;

@end

@implementation LLAudioPlayer

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError * _Nullable __autoreleasing *)outError{
self = [super initWithContentsOfURL:url error:outError];
if (self) {
    self.volume = 1.0;      //音量 0.0-1.0之间
    //self.numberOfLoops = 1; //循环次数 默认只播放一次
    self.currentTime = 0.0; //播放位置 可以指定从任意位置开始播放
}
return self;
}

- (id)initWithData:(NSData *)data error:(NSError * _Nullable __autoreleasing *)outError{
self = [super initWithData:data error:outError];
if (self) {
    self.volume = 1.0;      //音量 0.0-1.0之间
    //self.numberOfLoops = 1; //循环次数 默认只播放一次
    self.currentTime = 0.0; //播放位置 可以指定从任意位置开始播放
}
return self;
}

- (void)startPlay{//播放
_audioSession = [AVAudioSession sharedInstance];
[_audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[_audioSession setActive:YES error:nil];
[self prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
[self play];
}

- (void)pausePlay{//暂停
[self pause];
[_audioSession setActive:NO error:nil];
}

- (void)stopPlay{//停止
[self stop];
[_audioSession setActive:NO error:nil];
}

@end

2. 音频播放的第二种方式,AVPlayer:

话不多说,先上效果图:

LLAudioPlayer-播放界面.png LLAudioPlayer-歌曲列表.png LLAudioPlayer-锁屏界面.jpg

github下载地址:https://github.com/wangzhaomeng/LLAudioPlayer

代码比较多,就不一一解释了,感兴趣的童鞋可以下个demo看看,注释的很详细,就说几个注意事项:
1、如何实现后台播放;
2、处理中断事件,比如来电话时停止,电话挂断后恢复;
3、锁屏界面与交互处理。


后台设置.png 实现监听.png 注册后台与处理中断.png 设置锁屏界面.png

基本功能已经实现,单曲循环、随机播放,顺序播放、查看播放列表等等,同时添加了音频文件出错时的错误处理,可放心使用。

觉得好,就给个star,谢谢!

相关文章

网友评论

  • 不余先生:支持一下!
  • 6239961ce796:播放在线音频的时候有问题
    九剑仙:找到原因了,有些音频可能需要缓存一段时间之后才能播放,耐心等一会儿就好了
    九剑仙:demo已经改了,你可以去看一下,做了进一步优化...但是有些网络音频还是不能播放,目前还在找原因
  • cacb98a35daa:给楼主赞一个
    九剑仙:@流浪湖 谢谢
  • 白水灬煮一切:感谢分享!很不错
    九剑仙:@小僵儿 3Q
  • 秋雨无痕:这方面的文章有很多,它还可以播视频
    秋雨无痕:@九剑仙 音频播放可以看看core audio unit,这方面的写的好的是EZAudio
    秋雨无痕:@九剑仙 内容可以深挖,apple文档里就有的还用写出来吗
    九剑仙:@秋雨无痕 那又如何
  • 九剑仙:如有雷同,纯属巧合!

本文标题:iOS使用AVPlayer自定义音频播放器

本文链接:https://www.haomeiwen.com/subject/zedxzttx.html