首页 > 移动平台 > 详细

iOS播放器 - AVPlayer

时间:2016-06-12 18:24:03      阅读:165      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!