您的位置:首页 > 移动开发 > IOS开发

iOS基础学习(5)------音频(一)AudioservicesPlaySystemSound和AVAudioPlayer的使用

2014-10-24 10:20 771 查看
IOS 主要提供了下面几种播放音频的类:[objc] view plaincopyAudioservicesPlaySystemSound  
[objc] view plaincopyAVAudioPlayer 类  
[objc] view plaincopy音频队列
[objc] view plaincopyOpenAL  
1、首先介绍AudioservicesPlaySystemSound方法,这个函数一般用于播放简单的无混杂的音频,具体的要求有以下几点:  (1)、音频长度不能超过30秒;  (2)、所支持的格式只能是PCM或者IMA4;  (3)、文件必须被存储为.caf     .aif     .wav 三种格式;  (4)、不能从内存读取播放,只能从磁盘读取播放;  (5)、对于所播放的音频的播放方式不能控制,例如循环播放等:  (6)、该方法相对其他几种方法能够节省内存资源;所以该方法的一些特性也主动了其的用处,一般在程序中用于自定义的提示音或者警告。此处通过Demo来说明该方法的用处,(1)、新建一个工程,设置四个Button,
(2)、导入头文件将界面上的按钮和lable和代码进行关联,导入AVFoundation.framework库,当点击该按钮时调用系统自带的提示音:

[objc] view plaincopy#import <AudioToolbox/AudioToolbox.h>  
#import <CoreFoundation/CoreFoundation.h>  
[objc] view plaincopy@property (strong, nonatomic) IBOutlet UILabel *ui_labservice;  
[objc] view plaincopy<pre name="code" class="objc">- (IBAction)servicesPlay:(id)sender  
{  
    //震动  
    AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);  
    //调用系统的提示音  
    AudioServicesPlaySystemSound(1106);  
}  
2、AVAudioPlayer类的使用:使用该类需导入AudioToolbox.framework库和AVFoundation.framework库,在Demo中之前已导入AVFoundation,所以此处导入AudioToolbox即可:

  (1)、AVAudioPlayer使用简单方便,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据,支持所有的音频格式,官方文档的解释是:The AVAudioPlayer class lets you play sound in any audio format available in iOS and OS X. (2)、AVAudioPlayer可以播放任意长度的音频文件;(3)、支持循环播放;(4)、可以同步播放多个音频文件;(5)、控制播放进度以及从音频文件的任意一点开始播放,(6)、可以暂停,停止。其他特性请参考苹果官方文档;下面通过Demo中的代码来说明该方法的用处,首先导入头文件,[objc] view plaincopy#import <AVFoundation/AVFoundation.h>  
#import <MediaPlayer/MediaPlayer.h>  
[objc] view plaincopy@interface ViewController : UIViewController  
{  
    AVAudioPlayer *audioPlayer;  
    MPMoviePlayerViewController *moviePlayer;  
}  

实现点击不同按钮后播放、停止、暂停等方法:[objc] view plaincopy//暂停  
- (IBAction)AudioPlayerpause:(id)sender  
{  
    [audioPlayer pause];  
}  
//播放  
- (IBAction)AVAudioPlayer:(id)sender  
{  
    //禁止程序运行时自动锁屏  
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];  
  
    //本地文件  
    NSString *path = [[NSBundle mainBundle]  
                      pathForResource:@"001" ofType:@"mp3"];  
    //初始化音频  
    audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:  
                   [NSURL fileURLWithPath:path] error:NULL];  
    //分配资源将其加入到播放列表  
    [audioPlayer prepareToPlay];  
    [audioPlayer play];  
    //循环次数  
    audioPlayer.numberOfLoops =3;  
}  
//停止  
- (IBAction)AudioPlayerstop:(id)sender  
{  
     [audioPlayer stop];  
}  
ok,运行Demo,当点击播放时加入到工程中的音频会自动循环播放三次,需要注意的是,确保导入的声音文件和读取的文件名相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios AVAudioPlayer 音频