IOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列。
此文主要讲AVAudioPlayer,其他两个请见相关文章。
AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework。
AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不可以是网络url而必须是本地文件URL,因为 AVAudioPlayer不具备播放网络音频的能力,不过我们可以用过一点小手段使其具备这个能力,留待稍后讲解。
一个AVAudioPlayer只能播放一个音频,如果你想混音你可以创建多个AVAudioPlayer实例,每个相当于混音板上的一个轨道。
一、创建一个播放器
- #import <AVFoundation/AVFoundation.h>
- NSError* err;
- AVAudioPlayer* player = [[AVAudioPlayer alloc]
- initWithContentsOfURL:[NSURL fileURLWithPath:
- [[NSBundle mainBundle]pathForResource:
- @"music" ofType:@"m4a"
- inDirectory:@"/"]]
- error:&err ];//使用本地URL创建
我之前讲过AVAudioPlayer不可以播放网络URL,但是可以播放NSData,我们似乎受到了点启发,我们可以通过网络URL去创建NSData,然后在通过AVAudioPlayer来播放NSData,这样是不是就可以播放网络音乐了呢?但是此法并不可取,因为AVAudioPlayer只能播放一个完整的文件,并不支持流式播放,所以必须是缓冲完才能播放,所以如果网络文件过大抑或是网速不够岂不是要等很久?所以播放网络音频我们一般用音频队列。
二、播放器属性
创建一个AVAudioPlayer以后你就可以对它的各种属性进行访问或设置了 。
1.音量
2.循环次数 3.播放位置 4.声道数 5.持续时间6.仪表计数
- player.meteringEnabled = YES;//开启仪表计数功能
- [ player updateMeters];//更新仪表读数
- //读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。
- for(int i = 0; i<player.numberOfChannels;i++){
- float power = [player averagePowerForChannel:i];
- float peak = [player peakPowerForChannel:i];
- }
三、播放声音
准备了这么久,终于可以播放了,心情激动啊。
是否觉得准备了这么久,一下子就结束掉了,太快了,不用急,还有几个重点。
四、代理方法
加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。
首先给player设置委托是必须的:
- - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
- //播放结束时执行的动作
- }
- - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
- //解码错误执行的动作
- }
- - (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
- //处理中断的代码
- }
- - (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
- //处理中断结束的代码
- }
发表评论
-
IOS开发 多线程 一
2013-11-19 11:46 476原文:http://blog.csdn.net/develo ... -
IOS 学习 Key-value coding
2013-11-19 10:56 790原文:http://blog.csdn.net/develo ... -
IOS block dispatch_queue
2012-11-05 15:04 889研究了3天的block使用,今天终于写出了自己的第一个b ... -
socket编程 详解
2012-08-28 08:57 1033对TCP/IP、UDP ... -
iOS ASIHTTPRequest详解 非常强大
2012-08-27 13:20 2375ASIHTTPRequest对CFNetwork API ... -
今天看了ps的简介,决定一定要把它给学会,首先了解一下基础知识
2012-08-22 00:01 7121.位图图像的概念 位图图像使用像素来表示图像,因此也 ... -
SDWebImage使用,图片加载和缓存
2012-07-04 11:44 2392SDWebImage托管在github上。https:/ ... -
coredata 理解
2012-06-15 13:08 1356昨天开始认真的看coredata的用法,今天终于明白的其中的 ... -
#ifndef、#def、#endif说明
2012-06-13 13:43 861你所遇到的这几个 ... -
ios 数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Writ
2012-06-13 10:49 1332OK,今天Himi介绍游戏 ... -
使用iOS手势UIGestureRecognizer
2012-06-05 10:10 1199UIKit中包含了UIGestureRecognizer ... -
NSAutoReleasePool
2012-05-28 14:40 746好记性不如烂博客. 今天需要记录的是关于NSAutoR ... -
NSLocalizedString 实现国际化
2012-05-28 11:23 816一、获取系统所支持的国际化信息 在国际化之前,你可以在ip ... -
自定义 UIColor baseView 父类子类方法名 不能重复
2012-05-24 11:04 827原来是因为方法名字重复了,因为baseview的方法名和 ... -
Android图片处理(Matrix,ColorMatrix)
2012-05-22 09:24 846在编程中有时候需要 ... -
objectForKey与valueForKey在NSDictionary中的差异
2012-05-18 15:38 772从 NSDictionary 取值的时候有两个方法,ob ... -
symbol(s) not found for architexture i386 路径错误
2012-05-16 09:55 1537昨天这个错误又出现 ... -
symbol(s) not found for architexture i386 报错
2012-05-15 18:40 730我靠啊,今天下午出现了个这个错误,找了好多资料,发现让添加li ... -
symbol(s) not found for architexture i386 报错
2012-05-15 18:40 0我靠啊,今天下午出现了个这个错误,找了好多资料,发现让添加li ... -
推送 证书 联机调试
2012-05-15 15:16 821联机调试出现问题, ...
相关推荐
里我们要介绍的是AVAudio ToolBox框架中的AudioServicesPlaySystemSound函数创建的服务,特别适合用来制作铃声,下面就简单整理一下iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南:
本例使用 AVAudioPlayer 组成数组,来实现播放不同音乐、系统提示音的效果;并通过block来执行播放前、播放结束、播放停止的效果,适应项目的需要。
仿百度音乐,利用AVAudioPlayer加载本地音频文件的简单音频播放器,推荐iOS开发初学者下载学习。
AVAudioPlayer类轻松实现音频播放,资源内已经对系统AVAudioPlayer做了C++类的封装,使用的时候直接调用接口即可
iOS之AVAudioPlayer使用实例
AVAudioPlayer播放本地音频 很基本的一个demo
AVAudioPlayer音乐播放器 demo,oc
支持后台播放,锁屏操作(播放暂停,锁屏状态设置显示信息) 由于只能上传5M的包,所以只放了一个本地MP3文件 // 第一步: 找到 TARGETS-->Capabilities-->Background Modes -->(打开)Audio,AirPlay and Picture...
IOS下使用AVAudioPlayer播放MP3(支持后台播放) XCode 4.6.3下编译测试运行通过,真机测试通过
主要介绍了iOS App中调用AVAudioPlayer播放音频文件的用法,AVAudioPlayer仅能播放本地文件而不能添加网络源,实例代码为Objective-C,需要的朋友可以参考下
AVAudioPlayer的使用,完整代码,详细备注
AE音频播放器模拟 AVAudioPlayer 的 AVAudioEngine 音乐播放器。 只需将 AEAudioplayer.h 和 AEAudioPlayer.m 添加到您的项目中,并像使用任何 AVAudioPlayer 一样使用它。 要设置频率,只需使用您想要使用的频率...
AVAudioPlayer.zip
本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放、暂停、继续操作,音乐音量控制、播放进度显示,同时监听来电打断事件
允许:流式传输在线音频,播放本地文件,更改音频速度(3.5倍,4倍,32倍),音调和使用自定义的实时音频处理。 该播放器是为。 我们最初使用AVPlayer播放音频,但我们想操纵流式传输的音频。 我们最初设置...
对 AVPlayer 的封装,支持本地和远程音频的播放
上一篇中总结了iOS中音效和音频播放的最基本使用方法,其中音频的播放控制是使用AVFoundation.framework框架中的AVAudioPlayer播放器对象来实现的,而这里音频的录制则是使用了同样框架下的一个叫AVAudioRecorder的...
AVAudioPlayer 的音频播放的界面搭建,功能实现。