iOS 音频篇:使用 AVPlayer 播放网络音乐

1.引言


假如你现在打算做一个类似百度音乐、豆瓣电台的在线音乐类APP,你会怎样做?

首先了解一下音频播放的实现级别:(1) 离线播放:这里并不是指应用不联网,而是指播放本地音频文件,包括先下完完成音频文件再进行播放的情况,这种使用AVFoundation里的AVAudioPlayer可以满足(2) 在线播放:使用AVFoundation的AVPlayer可以满足(3) 在线播放同时存储文件:使用AudioFileStreamer + AudioQueue 可以满足(4) 在线播放且带有音效处理:使用AudioFileStreamer + AudioQueue + 音效模块(系统自带或者自行开发)来满足

本文主要针对第二种级别,介绍如何使用AVPlayer实现网络音乐的播放。

2.什么是AVPlayer


AVPlayer存在于AVFoundation中,其实它是一个视频播放器,但是用它来播放音乐是没问题的,当然播放音乐不需要呈现界面,因此我们不需要实现它的界面。

跟AVPlayer联系密切的名词:Asset:AVAsset是抽象类,不能直接使用,其子类AVURLAsset可以根据URL生成包含媒体信息的Asset对象。AVPlayerItem:和媒体资源存在对应关系,管理媒体资源的信息和状态。

3.功能需求


通常音乐播放并展示到界面上需要我们实现的功能如下:1、(核心)播放器通过一个网络链接播放音乐2、(基本)播放器的常用操作:暂停、播放、上一首、下一首等等3、(基本)监听该音乐的播放进度、获取音乐的总时间、当前播放时间4、(基本)监听改播放器状态:     (1)媒体加载状态     (2)数据缓冲状态     (3)播放完毕状态5、(可选)Remote Control控制音乐的播放6、(可选)Now Playing Center展示正在播放的音乐

4.功能实现


4.1通过一个网络链接播放音乐

NSURL * url = [NSURL URLWithString:self.currentSong.url];

AVPlayerItem * songItem = [[AVPlayerItem alloc]initWithURL:url];

AVPlayer * player = [[AVPlayer alloc]initWithPlayerItem:songItem];复制代码

这里是用一个asset来初始化player,当然你也可以直接用URL初始化:

AVPlayer * player = [[AVPlayer alloc] initWithURL:url];复制代码

需要获取当前播放的item可以这样获取:

AVPlayerItem * songItem = player.currentItem;复制代码

4.2播放器的常用操作

播放:

[player play];复制代码

需要注意的是初始化完player之后不一定会马上开始播放,需要等待player的状态变为ReadyToPlay才会进行播放。

暂停:

[player pause];复制代码

上一首、下一首:这里我们有两种方式可以实现,一种是由你自行控制下一首歌曲的item,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值