iOS AVAudioPlayer简介
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
会监听中断事件AVAudioSessionInterruptionNotification
和AVAudioSessionSilenceSecondaryAudioHintNotification
。分别是电话、闹铃响等一般性的中断和其他App占据AVAudioSession
的中断。
Backgrounds Modes
如果需要在后台播放或录音,需要在[Target] -> [Signing & Capabilities] -> [Background Modes]配置。详见iOS Background Modes
iOS AVAudioPlayer简介相关推荐
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
2016年GitHub 排名前 100 的安卓.iOS项目简介(收藏) 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android ...
- iOS UIColor简介
1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...
- IOS AVAudioPlayer 音频播放
IOS AVAudioPlayer 音频播放 要给工程中添加音频,首先要导入音频的框架 AVFoundation.framework 然后新建一个类继承于UIViewController, 我这里就叫 ...
- iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断
学习总是在进行. 一.AVAudioPlayer如何处理中断 AVAudioPlayer类提供了代理方法,用来处理当播放音频文件时,发生来电.闹钟等事件.设置代理并遵守AVAudioPlayerDel ...
- GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...
- 转:GitHub 排名前 100 的安卓、iOS项目简介
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)
简介 Objective-C,是扩充C的面向对象编程语言.它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
最新文章
- AngularJS转换请求内容
- 《Spring实战》读书笔记--SpringMVC之forward与redirect
- 洛谷P4114 Qtree1(树链剖分+线段树)
- C/C++ OpenCV直方图均衡化
- 在vscode运行js 输出会合并_前端系列——JS的运行与输出
- Jquery 小技巧
- linux备份整个系统
- Python配置CPLEX
- 深度解析|积分墙防作弊,一直在发展
- Moloch网络流量分析工具
- Date时间里的GMT是什么意思
- 深度学习(一)最通俗易懂的 Transformer
- 正则表达式匹配字符串
- 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
- 编程基础篇:#1082 : 然而沼跃鱼早就看穿了一切
- mysql查询语句speed select
- kibana去重统计和分组统计
- neutron基础六(bridge fdb)
- 佳能2020转印带拆卸图解_佳能iR2020更换显影组件以后的步骤
- 什么是油封?有哪些作用?
热门文章
- POI(excel) - WorkBook和Sheet
- 网络克隆实验(多播克隆)
- 注册页面 包含短信验证码
- 如何在appweb中使用javascript
- Web前端开发精品课HTML CSS JavaScript基础教程CSS部分知识点总结
- 什么是随机变量、 离散随机变量、 连续随机变量
- 【Java API】Java Runtime.availableProcessors()获取处理器cpu数量
- 基于STM32的儿童误锁车内远程报警系统(华为云IOT)
- WSL无法删除文件,文件权限问题
- sap mm采购订单交货已完成标识详解