`
sunqichao
  • 浏览: 28435 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

AVAudioPlayer 音频播放器 使用 教程

    博客分类:
  • IOS
阅读更多

 IOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列。

       此文主要讲AVAudioPlayer,其他两个请见相关文章。

AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework。

AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不可以是网络url而必须是本地文件URL,因为       AVAudioPlayer不具备播放网络音频的能力,不过我们可以用过一点小手段使其具备这个能力,留待稍后讲解。

        一个AVAudioPlayer只能播放一个音频,如果你想混音你可以创建多个AVAudioPlayer实例,每个相当于混音板上的一个轨道。

一、创建一个播放器

 

  1. #import <AVFoundation/AVFoundation.h>     
  2. NSError* err;  
  3. AVAudioPlayer* player = [[AVAudioPlayer alloc]  
  4.                         initWithContentsOfURL:[NSURL fileURLWithPath:  
  5.                                               [[NSBundle mainBundle]pathForResource:  
  6.                                            @"music" ofType:@"m4a"   
  7.                                            inDirectory:@"/"]]  
  8.                         error:&err ];//使用本地URL创建  
  1. AVAudioPlayer* player = [[AVAudioPlayer alloc]  
  2.                             initWithData:myData   
  3.                             error:&err ];//使用NSData创建  

        我之前讲过AVAudioPlayer不可以播放网络URL,但是可以播放NSData,我们似乎受到了点启发,我们可以通过网络URL去创建NSData,然后在通过AVAudioPlayer来播放NSData,这样是不是就可以播放网络音乐了呢?但是此法并不可取,因为AVAudioPlayer只能播放一个完整的文件,并不支持流式播放,所以必须是缓冲完才能播放,所以如果网络文件过大抑或是网速不够岂不是要等很久?所以播放网络音频我们一般用音频队列。

二、播放器属性

        创建一个AVAudioPlayer以后你就可以对它的各种属性进行访问或设置了 。

1.音量

  1. player.volume=0.8;//0.0~1.0之间  
2.循环次数
  1. player.numberOfLoops = 3;//默认只播放一次  
3.播放位置
  1. player.currentTime = 15.0;//可以指定从任意位置开始播放  
4.声道数
  1. NSUInteger channels = player.numberOfChannels;//只读属性  
5.持续时间
  1. NSTimeInterval duration = player.dueration;//获取采样的持续时间  

6.仪表计数

 

  1. player.meteringEnabled = YES;//开启仪表计数功能  
  2. [ player updateMeters];//更新仪表读数  
  3. //读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。  
  4. for(int i = 0; i<player.numberOfChannels;i++){  
  5. float power = [player averagePowerForChannel:i];  
  6. float peak = [player peakPowerForChannel:i];  
  7. }  

三、播放声音

        准备了这么久,终于可以播放了,心情激动啊。

  1. [ player prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列  
  2. [player play];//播放  
  3. [player stop];//停止  

         是否觉得准备了这么久,一下子就结束掉了,太快了,不用急,还有几个重点。

四、代理方法

          加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。

         首先给player设置委托是必须的:

  1. player.delegate = self;  
  1. - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{  
  2.     //播放结束时执行的动作  
  3. }  
  4. - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{  
  5.     //解码错误执行的动作  
  6. }  
  7. - (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{  
  8.     //处理中断的代码  
  9. }  
  10. - (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{  
  11.     //处理中断结束的代码  
  12. }  
分享到:
评论

相关推荐

    ios音乐播放器案例

    在音乐播放器中,主要会用到AVAudioPlayer类,它负责播放音频文件。我们首先需要导入AVFoundation框架: ```swift import AVFoundation ``` 然后,创建一个AVAudioPlayer实例,加载音频文件,并准备播放: ```...

    iOS- swift 制作来电铃声 + 裁剪音频+音频格式转换

    1. **音频播放器UI**:创建一个简洁易用的界面来显示音频波形、进度条、播放/暂停按钮等。可以使用AVFoundation的`AVAudioPlayer`类来播放音频,并结合UIKit的`UIProgressView`和自定义控件实现进度控制。 2. **...

    iOS音频播放demo

    通过以上步骤,你将能够构建一个基本的音频播放器,包含播放、暂停、停止、进度条和音量控制等功能。在实际项目中,还可以根据需求增加错误处理、多文件播放、音效设置等特性。记住,良好的用户体验是成功的关键,...

    iOS AudioUnit 教程

    - **简单音频播放器**:利用AudioUnit播放预录制的音频文件。 - **音频效果处理**:添加混响、延迟等效果到音频流中。 - **实时音频处理**:处理麦克风输入的音频数据,实现实时音频效果。 #### 三、AVFoundation...

    ios swift 在线音乐播放器 示例

    进度条的值可以绑定到音频播放器的当前时间,以便实时更新。 4. **后台播放**:iOS支持后台播放音乐,这是通过在Info.plist文件中设置`UIBackgroundModes`键,并包含`audio`子键来实现的。此外,需要确保在`...

    iOS MusicPlayer的简单实现

    9. **缓冲和下载管理**:对于在线音乐,可能需要实现缓冲和下载功能,可以使用URLSession进行网络请求,下载音频文件到本地,然后使用AVAudioPlayer播放。 10. **状态保存与恢复**:当应用进入后台时,需要保存当前...

    ios播放caf语言文件工具类集成即可使用.zip

    本教程将介绍如何在iOS项目中集成一个工具类来播放CAF文件,以便用户可以轻松地在应用内播放这些音频。提供的压缩包文件包含两个源代码文件:BHAudioTools.h 和 BHAudioTools.m,它们是实现这个功能的关键。 首先,...

    获取本地音乐demo

    4. **音频播放器组件**:在Android中,可以使用`MediaPlayer`或`ExoPlayer`进行音频播放。`MediaPlayer`是内置的简单播放器,而`ExoPlayer`是Google推荐的高性能播放器,支持更多自定义和高级功能。在iOS中,可以...

    音乐播放器功能

    `帮助文档.url`和`说明.url`则可能是指向在线文档或教程的链接,有助于进一步理解源码的使用方法。 在实际开发中,为了提升用户体验,音乐播放器可能还会涉及到后台播放、锁屏显示、耳机控制等功能。这些功能需要...

    关于mpmoviecontrol很好的视频教程短例子

    在实际开发中,如果需要处理音频播放,可以使用`AVFoundation`框架中的`AVAudioPlayer`类。 总的来说,这个教程例子旨在帮助新手了解如何在iOS应用中使用`MPMoviePlayerController`播放视频,通过学习和实践,...

    放背景音乐时同时放其他声音

    这通常需要对音频播放器的控制进行精确的时间调度和缓冲区管理。 4. **事件监听与响应**: 为了在背景音乐停止时实现平滑淡出,源码可能包含对音频播放完成事件的监听。当检测到背景音乐播放结束,可以启动一个...

    实现音乐播放器

    使用AVAudioPlayer,你可以控制音频的播放,如播放、暂停、停止、快进、倒退以及调整音量等。在这个音乐播放器项目中,开发者利用了这些特性,使得用户能够播放存储在设备上的音乐文件,并自由调整音量。 在描述中...

    ios录音 播放

    `AVAudioPlayer`则用于播放音频文件,它提供了简单的接口来控制音频播放,如播放、暂停、停止等。 `Voice.h`和`VoiceUtils.h`很可能是定义了录音和播放的相关类或工具类的头文件。它们可能包含了初始化录音器和...

    IOS 录音与播放

    4. **播放录音**:在播放录音时,我们可以使用AVFoundation的AVAudioPlayer类。创建AVAudioPlayer对象,同样需要指定音频文件的URL。然后,调用`play`方法开始播放,`pause`、`stop`方法分别用于暂停和停止播放。 5...

    playsoundios:使用 Swift 示例播放声音 iOS

    在iOS开发中,声音的播放是许多应用必不可少的...通过导入框架、初始化音频播放器、加载音频文件以及调用播放方法,你可以轻松地在iOS应用中实现声音播放。同时,利用代理方法可以监控播放状态,从而实现更复杂的功能。

    AVFoundationTutorial:适用于 iOS 的 AVFoundation 和 OpenCV 教程

    - **AVAudioRecorder**和**AVAudioPlayer**:分别用于录音和播放音频。 - **AVVideoComposition**:允许自定义视频的渲染效果,如添加过渡、滤镜等。 2. **AVFoundation实战技巧** - 实现视频播放:通过创建...

Global site tag (gtag.js) - Google Analytics