码迷,mamicode.com
首页 > 移动开发 > 详细

iOS播放器 - AVPlayer

时间:2016-06-12 18:26:16      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:

之前有说到在播放器中一点点小技巧,现在正式记录一下AVPlayer。

这里主要是说明用AVPlayer做音乐播放器的功能实现,所以不介绍AVPlayer中那个图层类。

首先我们要声明一下播放器,这里有个小坑如果不是全局变量有时候不能播放,网上有一篇文章对这个BUG有个深入研究可以去百度一下,这里不做深入探讨。
@property (nonatomic ,strong) AVPlayer *avPlayer;
@property (nonatomic ,strong) AVPlayerItem *avPlayerItem;
 
-(void)viewDidLoad{
  [super viewDidLoad];
  self.avPlayerItem = [[AVPlayerItem alloc] initWithURL:url];
  self.avPlayer = [[AVPlayer alloc]initWithPlayerItem:self.avPlayerItem];
  [self.avPlayer play];
}
 

然后监听playerItemstatusloadedTimeRange属性,status有三种状态:

AVPlayerStatusUnknown,

AVPlayerStatusReadyToPlay,

AVPlayerStatusFailed

status等于AVPlayerStatusReadyToPlay时代表音频已经可以播放了,我们就可以调用play方法播放了。

loadedTimeRange属性代表已经缓冲的进度,监听此属性可以在UI中更新缓冲进度,也是很有用的一个属性。

AVPlayer没有像AVAUdioPlayer里面的播放完成的代理方法,因此我们可以自己创建一个监听者去监听这个状态,当一首歌曲播放完毕就执行下一曲的方法。

//监听是否播放完毕

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];

在playend方法里面执行下一曲方法就可以了,但要注意如果播放网络资源就要设置task,这个之前是有说过不再啰嗦。

还有一些必要的属性这里介绍一下:

//获取当前播放时间

    dur = CMTimeGetSeconds([self.avplayer currentTime]);

//总时间

    time  = self.avplayerItem.duration.value/self.avplayerItem.duration.timescale;

至于设置后台播放想必这个随手都能百度到就不再赘述。

iOS播放器 - AVPlayer

标签:

原文地址:http://www.cnblogs.com/SunnyOMGi/p/5578152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!