iOS开发音频播放基础——AVAudioPlayer的应用

iOS音频开发——AVAudioPlayer应用

AVAudioPlayer是系统提供给我们的一个音频播放类,在AVFoundation框架下,通过它,我们可以实现一个功能强大的音乐播放器。首先,在项目中我们需要导入AVFoundation这个框架。

一、AVAudioPlayer方法与属性详解

初始化方法有两种,通过音频的路径或者音频data数据初始化player对象

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

注意:支持的音频格式有:AAC,ALAC,HE-AAC,iLBC,IMA4,MP3.

准备播放音频,返回值标志是否解析成功,是否可以播放。

- (BOOL)prepareToPlay;

开始播放音频

- (BOOL)play;

在一段时间间隔后播放

- (BOOL)playAtTime:(NSTimeInterval)time;

暂停播放,并且准备好继续播放

- (void)pause;

停止播放,不再准备好继续播放

- (void)stop;

获取是否正在播放

@property(readonly, getter=isPlaying) BOOL playing;

获取当前音频声道数

@property(readonly) NSUInteger numberOfChannels;

获取当前音频时长

@property(readonly) NSTimeInterval duration;

获取创建时的音频路径

@property(readonly) NSURL *url;

获取创建时的音频数据

@property(readonly) NSData *data;

设置声道偏移量,0为中心,-1为只有左声道,1为只有右声道

@property float pan;

设置音频音量,取值为0-1之间

@property float volume;

设置是否可以改变播放速度

@property BOOL enableRate;

注意:设置这个属性前必须先调用prepareToPlay这个方法。

设置播放速度,1为正常,0.5为一半速度,2.0为2倍速度

@property float rate;

设置当前播放的时间点

@property NSTimeInterval currentTime;

设置音频播放循环次数

@property NSInteger numberOfLoops;

获取音频设置字典

@property(readonly) NSDictionary *settings;

是否开启仪表计数功能

@property(getter=isMeteringEnabled) BOOL meteringEnabled;

更新仪表计数的值

- (void)updateMeters;

获取指定声道音频峰值

- (float)peakPowerForChannel:(NSUInteger)channelNumber;

获取指定声道音频平均值

- (float)averagePowerForChannel:(NSUInteger)channelNumber;

二、AVAudioPlayerDelegate方法详解

音频播放结束后调用的函数

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;

播放遇到错误时调用的函数

- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;

学习使用 欢迎转载

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web编程技术分享

《从案例中学习JavaScript》之实现对话效果(3)

29950
来自专栏老司机的简书

老司机带你走进Core Animation 之粒子发射、TileLayer与异步绘制

老司机带你走进Core Animation 之粒子发射、TileLayer与异步绘制

12020
来自专栏极客慕白的成长之路

Web前端开发推荐阅读书籍、学习课程下载

学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢?

59060
来自专栏游戏杂谈

JavaScript监控当前cpu使用状况

也许在你面试的某一天,突然问你一个问题:“如何粗略的计算出当前系统cpu的使用情况?”

15020
来自专栏移动开发之家

Android 拍摄(横\竖屏)视频的懒人之路

请捂着你的良心说话,对于贫穷的作者(我)不是应该打赏么 ̄へ ̄!,接下来工作又要忙起来了,更新应该是放缓了呢╮(╯_╰)╭,好伤心。

41830
来自专栏IMWeb前端团队

聊聊CSS postproccessors

阿里妈妈 @一丝 准备发布其CSSGrace,即CSS后处理插件,于是顺便聊聊CSS postprocessors。 从Rework说起 Rework是TJ...

20260
来自专栏张戈的专栏

网站集成打字震动特效JS代码改进版

这又是一个拖欠了很久的分享,很早就有朋友留言问评论打字炫彩、震动特效怎么实现的。这功能其实网上早就有人分享 N 遍了,有点搜索技巧和 DIY 能力的站长同学也早...

53270
来自专栏進无尽的文章

多媒体-图片、音频、视频的基本实现

AVFoundation的录音和播放 音频的录制与播放主要和三个类有关AVAudioSession,AVAudioRecorder,AVAudioPlayer...

9610
来自专栏Material Design组件

Human Interface Guidelines — Interface Essentials

15970
来自专栏中国Android研究院

能动手就别吵吵!

自从上回跑通了Hello World后,鲍勃对Flutter的信心大增啊。心里琢磨着能不能用Flutter实现公司现在正在做的APP的效果呢!说做就做,马上拿起...

19310

扫码关注云+社区

领取腾讯云代金券