IOS-AVAudioPlayer文档翻译

来源:互联网 发布:python运行 编辑:程序博客网 时间:2024/05/17 22:10

概述

一个AVAudioPlayer对象实例,被称作音频播放器,用于播放文件或内存中的音频数据。

Apple推荐你使用这个类播放音频文件,除了你要播放的音频获取自网络流或者是需要非常低的I/O延迟。为了总体了解音频技术,阅读 Audio & Video Starting Point"和 “Using Audio 在多媒体编程指南中。

使用音频播放器,你可以:

播放任何持续时间的音频

播放的音频可以来自文件或者内存

循环播放

可以同时播放多个音频,每个音频对应一个音频播放器,具有精确的同步。

控制你所播放音频的播放标准,立体声相位,和播放速率

可以跳转到音频文件的某个特点位置,应用可以通过这实现快进与快退。

获取你用来控制播放标准的数据

AVAudioPlayer类可以让你播放iOS支持的任意格式的音乐。你可以通过实现代理去处理中断或者在音乐播放结束后,更新用户界面。
这个类使用objective-c公开的属性特点去编辑音频的信息,例如音频时间线上的播放点,访问播放的选择,例如音量和循环。你也可以使用playing方法测试音频是否播放。
要配置播放一个音频会话,参照AVAudioSessionAVAudioSessionDelegate。要了解你所选择的文件格式是否影响多个音频的播放,请参阅“iPhone Hardware and Software Audio Codecs” in Multimedia Programming Guide。


函数

初始化函数

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError

初始化并返回一个播放器,播放指定的音乐文件

- (id)initWithData:(NSData *)data error:(NSError **)outError

初始化并返回一个播放器,播放内存中的指定数据

播放控制与配置

- (BOOL)play

异步播放音乐(在调用这个函数时,如果音频还没有做好播放准备,会暗中调用prepareToPlay函数

-

- (void)pause
暂停播放,音频将从暂停点重新播放
调用pause取消音频的播放准备状态,但并不释放音频播放和准备播放音频时所需要的音频硬件
- (void)stop
停止播放,解除播放所需要的设备

- (BOOL)prepareToPlay
通过预加载视频数据,为视频播放做准备
调用这个函数去预加载数据和获取音频播放所需要的硬件,来使调用play函数和音频开始输出之间的间隔最小。可以调用stop函数或等待音频播放完,来取消这个函数的设置。

@property(readonly, getter=isPlaying) BOOL playing
一个bool值,用于指示一个音频播放器是否在进行播放。
提示:要想看一个视频是否播放完,可以用代理里的方法;(不必去循环检测这个属性。)

@property float volume
音频播放器音量0-1.0之间

@property float pan
立体声的音道,通过设置这个属性,你可以设置声道,值-1.0全是左声道,0是左右平衡,1.0是全部右声道。

@property float rate
音频播放速度,这个属性默认值是1.0,提供一个正常的播放速度,可用值是从0.5既一半播放速度,到2.0两倍播放速度之间
要设置音频的播放速度,你还要看数度调节属性enableRate属性。

@property BOOL enableRate
一个bool值,指定一个音频播放器的播放速度调节是否可用。
要想能够调节一个音频的播放速度,设置这个属性为YES,调用时机在初始化音频后和调用prepareToPlay函数前。

@property NSInteger numberOfLoops
设置音频循环次数
0是默认值,意味着音频播放一次。设置一个正整数去指定返回到音频开头重新播放的次数。例如,指定值为1,结果总共播放了两次音频。要是设置一个负值,则无限循环播放,直到你调用stop函数。

@property(assign) id<AVAudioPlayerDelegate> delegate
音频播放代理
你所指定为音频播放器代理的对象,成为AvAudioPlayerDelegate中所描述通知的目标对象。这些通知允许你对解码错误,音频中断,播放完成进行响应。

@property(readonly) NSDictionary *settings
音频播放器的设置字典,包括音频和所联系的播放器的信息。
一个音频播放器设置字典,包含的信息有:
    •    Channel layout (AVChannelLayoutKey)
声道设置
    •    Encoder bit rate (AVEncoderBitRateKey)
编码率
    •    Audio data format (AVFormatIDKey)
音频数据类型
    •    Channel count (AVNumberOfChannelsKey)
声道数
    •    Sample rate (AVSampleRateKey)
音频播放速度

音频的管理信息

@property(readonly) NSUInteger numberOfChannels
音频播放器所对应音频的声道数量

@property(readonly) NSTimeInterval duration
音频播放器所对应音频的总持续时间,单位秒

@property NSTimeInterval currentTime
音频播放器所对应音频在时间线上的当前播放点
如果音频正在播放,currentTime被设置为当前播放位置到音频开始处的秒数。如果音频没有播放,currentTime被设置,play函数被调用是音频播放处,到音频开始处的秒数。
通过设置这个属性,你可以指定音频的特定点,或实现音频的快进或到回;

@property(readonly) NSTimeInterval deviceCurrentTime
音频输出设备的时间值,单位秒
这个属性的值在音频播放或停止时都会单调递增。如果多个音频播放器连接到音频播放设备,设备时间会一直增加,只要有一个音频播放器处在播放或暂停状态。否则,设备时间归0.
使用这个属性去象征now,当调用playAtTime:函数时。通过配置多个音频播放器去播放在指定deviceCurrentTime的指定点,你可以实现精确的同步性。

@property(readonly) NSURL *url
音频播放器所对应音频的url
如果音频不是用url初始化的,则返回nil

@property(readonly) NSData *data
音频播放器所对应音频的Data
如果音频不是用data初始化的,则返回nil

Using Audio Level Metering
@property(getter=isMeteringEnabled) BOOL meteringEnabled
- (float)averagePowerForChannel:(NSUInteger)channelNumber
- (float)peakPowerForChannel:(NSUInteger)channelNumber
- (void)updateMeters