支持的文件格式:(它是以后缀名进行识别的,后缀名就是格式,如果后缀名与真实的格式不一致,它就播放不了)
- AAC
- AMR (Adaptive multi-Rate,一种语音格式)
- ALAC (Apple lossless Audio Codec)
- iLBC (internet Low Bitrate Codec,另一种语音格式)
- IMA4 (IMA/ADPCM)
- linearPCM (uncompressed)
- u-law 和 a-law
- MP3 (MPEG-Laudio Layer 3)
属性 | 描述 |
@property(readonly, getter=isPlaying) BOOL playing | 是否正在播放,只读 |
@property float volume | 音量大小,范围0~1.0 |
@property float pan | 立体声,-1.0完全左声道,0.0左右声道平衡,1.0完全右声道 |
@property float rate | 播放速率,范围0.5~2.0,1.0时为正常播放,如果需要更改播放速率必须设置enableRate为YES |
@property BOOL enableRate | 是否可以更改播放速率 |
@property NSInteger numberOfLoops | 重复播放次数,为0时只播放一次,小于0时为无限播放,大于0时表示循环次数 |
@property(readonly) NSDictionary *settings | 音频播放次数信息,只读 |
@property(readonly) NSUInteger numberOfChannels | 与音频播放器相关联的声音通道的数量。(只读) |
@property(nonatomic, copy) NSArray *channelAssignments | 与音频播放器相关AVAudioSessionChannelDescription对象数组 |
@property(readonly) NSTimeInterval duration | 播放时长 |
@property NSTimeInterval currentTime | 当前播放时长 |
@property(readonly) NSTimeInterval deviceCurrentTime | 输出设备播放音频的时间,注意如果播放中被暂停此时间也会继续累加 |
@property(readonly) NSURL *url | 音频文件路径,只读 |
@property(readonly) NSData *data | 音频数据,只读 |
@property(getter=isMeteringEnabled) BOOL meteringEnabled | 否启用音频测量,默认为NO,一旦启用音频测量可以通过updateMeters方法更新测量值 |
对象方法 | 描述 |
- (instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError | 使用文件URL初始化播放器,注意这个URL不能是HTTP URL,AVAudioPlayer不支持加载网络媒体流,只能播放本地文件 |
- (instancetype)initWithData:(NSData *)data error:(NSError **)outError |
使用NSData初始化播放器,注意使用此方法时必须文件格式和文件后缀一致,否则出错,所以相比此方法更推荐使用上述方法 或- (instancetype)initWithData:(NSData *)data fileTypeHint:(NSString *)utiString error:(NSError **)outError方法进行初始化 |
- (BOOL)play | 播放音频文件 |
- (BOOL)playAtTime:(NSTimeInterval)time | 在指定的时间开始播放音频;延迟播放;使用的时候先获取设备当前时间+延时播放 |
- (void)pause | 暂停播放 |
- (void)stop | 停止播放 |
- (BOOL)prepareToPlay | 将音频文件加载到缓冲区 |
- (float)averagePowerForChannel:(NSUInteger)channelNumber | 获得指定声道的分贝平均值,注意如果要获得分贝平均值必须在此之前调用updateMeters方法 |
- (float)peakPowerForChannel:(NSUInteger)channelNumber | 获得指定声道的分贝峰值,注意如果要获得分贝峰值必须在此之前调用updateMeters方法 |
- (void)updateMeters | 更新音频测量值,注意如果要更新音频测量值必须设置meteringEnabled为YES,通过音频测量值可以即时获得音频分贝等信息 |
代理方法 | 说明 |
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag | 播放完成后调用,在这里可以进行一些属性的设置 |
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error | 音频解码发生错误 |
参考: