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 508原文:http://blog.csdn.net/develo ... -
IOS 学习 Key-value coding
2013-11-19 10:56 833原文:http://blog.csdn.net/develo ... -
IOS block dispatch_queue
2012-11-05 15:04 933研究了3天的block使用,今天终于写出了自己的第一个b ... -
socket编程 详解
2012-08-28 08:57 1103对TCP/IP、UDP ... -
iOS ASIHTTPRequest详解 非常强大
2012-08-27 13:20 2440ASIHTTPRequest对CFNetwork API ... -
今天看了ps的简介,决定一定要把它给学会,首先了解一下基础知识
2012-08-22 00:01 7671.位图图像的概念 位图图像使用像素来表示图像,因此也 ... -
SDWebImage使用,图片加载和缓存
2012-07-04 11:44 2434SDWebImage托管在github上。https:/ ... -
coredata 理解
2012-06-15 13:08 1403昨天开始认真的看coredata的用法,今天终于明白的其中的 ... -
#ifndef、#def、#endif说明
2012-06-13 13:43 898你所遇到的这几个 ... -
ios 数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Writ
2012-06-13 10:49 1374OK,今天Himi介绍游戏 ... -
使用iOS手势UIGestureRecognizer
2012-06-05 10:10 1247UIKit中包含了UIGestureRecognizer ... -
NSAutoReleasePool
2012-05-28 14:40 783好记性不如烂博客. 今天需要记录的是关于NSAutoR ... -
NSLocalizedString 实现国际化
2012-05-28 11:23 855一、获取系统所支持的国际化信息 在国际化之前,你可以在ip ... -
自定义 UIColor baseView 父类子类方法名 不能重复
2012-05-24 11:04 862原来是因为方法名字重复了,因为baseview的方法名和 ... -
Android图片处理(Matrix,ColorMatrix)
2012-05-22 09:24 875在编程中有时候需要 ... -
objectForKey与valueForKey在NSDictionary中的差异
2012-05-18 15:38 807从 NSDictionary 取值的时候有两个方法,ob ... -
symbol(s) not found for architexture i386 路径错误
2012-05-16 09:55 1573昨天这个错误又出现 ... -
symbol(s) not found for architexture i386 报错
2012-05-15 18:40 771我靠啊,今天下午出现了个这个错误,找了好多资料,发现让添加li ... -
symbol(s) not found for architexture i386 报错
2012-05-15 18:40 0我靠啊,今天下午出现了个这个错误,找了好多资料,发现让添加li ... -
推送 证书 联机调试
2012-05-15 15:16 853联机调试出现问题, ...
相关推荐
在音乐播放器中,主要会用到AVAudioPlayer类,它负责播放音频文件。我们首先需要导入AVFoundation框架: ```swift import AVFoundation ``` 然后,创建一个AVAudioPlayer实例,加载音频文件,并准备播放: ```...
1. **音频播放器UI**:创建一个简洁易用的界面来显示音频波形、进度条、播放/暂停按钮等。可以使用AVFoundation的`AVAudioPlayer`类来播放音频,并结合UIKit的`UIProgressView`和自定义控件实现进度控制。 2. **...
通过以上步骤,你将能够构建一个基本的音频播放器,包含播放、暂停、停止、进度条和音量控制等功能。在实际项目中,还可以根据需求增加错误处理、多文件播放、音效设置等特性。记住,良好的用户体验是成功的关键,...
- **简单音频播放器**:利用AudioUnit播放预录制的音频文件。 - **音频效果处理**:添加混响、延迟等效果到音频流中。 - **实时音频处理**:处理麦克风输入的音频数据,实现实时音频效果。 #### 三、AVFoundation...
进度条的值可以绑定到音频播放器的当前时间,以便实时更新。 4. **后台播放**:iOS支持后台播放音乐,这是通过在Info.plist文件中设置`UIBackgroundModes`键,并包含`audio`子键来实现的。此外,需要确保在`...
9. **缓冲和下载管理**:对于在线音乐,可能需要实现缓冲和下载功能,可以使用URLSession进行网络请求,下载音频文件到本地,然后使用AVAudioPlayer播放。 10. **状态保存与恢复**:当应用进入后台时,需要保存当前...
本教程将介绍如何在iOS项目中集成一个工具类来播放CAF文件,以便用户可以轻松地在应用内播放这些音频。提供的压缩包文件包含两个源代码文件:BHAudioTools.h 和 BHAudioTools.m,它们是实现这个功能的关键。 首先,...
4. **音频播放器组件**:在Android中,可以使用`MediaPlayer`或`ExoPlayer`进行音频播放。`MediaPlayer`是内置的简单播放器,而`ExoPlayer`是Google推荐的高性能播放器,支持更多自定义和高级功能。在iOS中,可以...
`帮助文档.url`和`说明.url`则可能是指向在线文档或教程的链接,有助于进一步理解源码的使用方法。 在实际开发中,为了提升用户体验,音乐播放器可能还会涉及到后台播放、锁屏显示、耳机控制等功能。这些功能需要...
在实际开发中,如果需要处理音频播放,可以使用`AVFoundation`框架中的`AVAudioPlayer`类。 总的来说,这个教程例子旨在帮助新手了解如何在iOS应用中使用`MPMoviePlayerController`播放视频,通过学习和实践,...
这通常需要对音频播放器的控制进行精确的时间调度和缓冲区管理。 4. **事件监听与响应**: 为了在背景音乐停止时实现平滑淡出,源码可能包含对音频播放完成事件的监听。当检测到背景音乐播放结束,可以启动一个...
使用AVAudioPlayer,你可以控制音频的播放,如播放、暂停、停止、快进、倒退以及调整音量等。在这个音乐播放器项目中,开发者利用了这些特性,使得用户能够播放存储在设备上的音乐文件,并自由调整音量。 在描述中...
`AVAudioPlayer`则用于播放音频文件,它提供了简单的接口来控制音频播放,如播放、暂停、停止等。 `Voice.h`和`VoiceUtils.h`很可能是定义了录音和播放的相关类或工具类的头文件。它们可能包含了初始化录音器和...
4. **播放录音**:在播放录音时,我们可以使用AVFoundation的AVAudioPlayer类。创建AVAudioPlayer对象,同样需要指定音频文件的URL。然后,调用`play`方法开始播放,`pause`、`stop`方法分别用于暂停和停止播放。 5...
在iOS开发中,声音的播放是许多应用必不可少的...通过导入框架、初始化音频播放器、加载音频文件以及调用播放方法,你可以轻松地在iOS应用中实现声音播放。同时,利用代理方法可以监控播放状态,从而实现更复杂的功能。
- **AVAudioRecorder**和**AVAudioPlayer**:分别用于录音和播放音频。 - **AVVideoComposition**:允许自定义视频的渲染效果,如添加过渡、滤镜等。 2. **AVFoundation实战技巧** - 实现视频播放:通过创建...