AVAudioPlayer属性

支持的文件格式:(它是以后缀名进行识别的,后缀名就是格式,如果后缀名与真实的格式不一致,它就播放不了)

  • 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 音频解码发生错误

参考:

sjzLovecj

原文地址:https://www.cnblogs.com/8335IT/p/14340316.html