1. AVAudioPlayer

AVAudioPlayer在AVFoundation框架下,AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL必须是本地文件URL,因为AVAudioPlayer不具备播放网络音频的能力。

- (nullable instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
- (nullable instancetype)initWithData:(NSData *)data error:(NSError **)outError;

AVAudioPlayer的主要属性

// 是否正在播放,只读
@property(readonly, getter=isPlaying) BOOL playing;// 当前播放时长
@property NSTimeInterval currentTime;
// 播放总时长,只读
@property(readonly) NSTimeInterval duration;// 音量,0.0 ~ 1.0
@property float volume;// 是否可以更改播放速率,需要在prepareToPlay前设置为YES
@property BOOL enableRate;
// 播放速率,1.0为正常,0.5是半速,2.0是双倍速
@property float rate;// 循环次数,0时循环1次,负数为无限循环,1表示播放2次
@property NSInteger numberOfLoops;
// 声道数量,只读
@property(readonly) NSUInteger numberOfChannels;

AVAudioPlayer的主要方法

// 预加载资源,YES成功,NO失败
- (BOOL)prepareToPlay;// 播放音频文件
- (BOOL)play;
// 在指定时间播放音频文件
- (BOOL)playAtTime:(NSTimeInterval)time;// 暂停播放
- (void)pause;
// 停止播放
- (void)stop;

示例代码

- (void)viewDidLoad {[super viewDidLoad];... ...AVAudioSession *audioSession = [AVAudioSession sharedInstance];[audioSession setActive:YES error:nil];self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];[self.audioPlayer prepareToPlay];[self.audioPlayer play];
}

AVAudioPlayerDelegate

AVAudioPlayerDelegate用来监听AVAudioPlayer播放情况

// 播放结束时执行
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;// 解码错误后执行
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error;

AVAudioSession

AVAudioSession控制着当前APP上下文音频资源,具体可见iOS AVAudioSession详解。

在这里,我们主要用AVAudioSession会监听中断事件AVAudioSessionInterruptionNotificationAVAudioSessionSilenceSecondaryAudioHintNotification。分别是电话、闹铃响等一般性的中断和其他App占据AVAudioSession的中断。

Backgrounds Modes

如果需要在后台播放或录音,需要在[Target] -> [Signing & Capabilities] -> [Background Modes]配置。详见iOS Background Modes

iOS AVAudioPlayer简介相关推荐

  1. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  2. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    2016年GitHub 排名前 100 的安卓.iOS项目简介(收藏)   排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android ...

  3. iOS UIColor简介

    1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...

  4. IOS AVAudioPlayer 音频播放

    IOS AVAudioPlayer 音频播放 要给工程中添加音频,首先要导入音频的框架 AVFoundation.framework 然后新建一个类继承于UIViewController, 我这里就叫 ...

  5. iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断

    学习总是在进行. 一.AVAudioPlayer如何处理中断 AVAudioPlayer类提供了代理方法,用来处理当播放音频文件时,发生来电.闹钟等事件.设置代理并遵守AVAudioPlayerDel ...

  6. GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...

  7. 转:GitHub 排名前 100 的安卓、iOS项目简介

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

  8. Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)

    简介 Objective-C,是扩充C的面向对象编程语言.它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特 ...

  9. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

最新文章

  1. AngularJS转换请求内容
  2. 《Spring实战》读书笔记--SpringMVC之forward与redirect
  3. 洛谷P4114 Qtree1(树链剖分+线段树)
  4. C/C++ OpenCV直方图均衡化
  5. 在vscode运行js 输出会合并_前端系列——JS的运行与输出
  6. Jquery 小技巧
  7. linux备份整个系统
  8. Python配置CPLEX
  9. 深度解析|积分墙防作弊,一直在发展
  10. Moloch网络流量分析工具
  11. Date时间里的GMT是什么意思
  12. 深度学习(一)最通俗易懂的 Transformer
  13. 正则表达式匹配字符串
  14. 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
  15. 编程基础篇:#1082 : 然而沼跃鱼早就看穿了一切
  16. mysql查询语句speed select
  17. kibana去重统计和分组统计
  18. neutron基础六(bridge fdb)
  19. 佳能2020转印带拆卸图解_佳能iR2020更换显影组件以后的步骤
  20. 什么是油封?有哪些作用?

热门文章

  1. POI(excel) - WorkBook和Sheet
  2. 网络克隆实验(多播克隆)
  3. 注册页面 包含短信验证码
  4. 如何在appweb中使用javascript
  5. Web前端开发精品课HTML CSS JavaScript基础教程CSS部分知识点总结
  6. 什么是随机变量、 离散随机变量、 连续随机变量
  7. 【Java API】Java Runtime.availableProcessors()获取处理器cpu数量
  8. 基于STM32的儿童误锁车内远程报警系统(华为云IOT)
  9. WSL无法删除文件,文件权限问题
  10. sap mm采购订单交货已完成标识详解