功能介紹
用于播放比較長的音頻板祝、說明、音樂
它使用的是AVFoundation框架
使用步驟
(0)導入AVFoundation框架
(1)資源文件路徑 (為下一步初始化播放器做準備)
(2)初始化播放器
(3)設置播放器的各種屬性(根據項目需求設置屬性)
(4)預播放
(5)播放
初始化播放器的時候注意:
1)必須聲明全局變量甥桂、屬性的音樂播放對象 才可以播放
2)在退出播放頁面的時候一定要把播放對象置空 同時把delegate置空
實例說明
//1柿究、導入框架
#import <AVFoundation/AVFoundation.h>
//聲明一個error對象 如果有錯誤系統(tǒng)會賦值給error
NSError *error;
//2、初始化播放器 資源路徑直接寫在代碼里了
audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"筆墨稠.mp3" withExtension:nil] error:&error];
//如果有錯誤 打印錯誤
if (error) {
NSLog(@"%@",error);
}
//4黄选、預播放
[audioPlayer prepareToPlay];
//5蝇摸、播放
[audioPlayer play];
以上代碼就可以簡單的播放一段音樂了,但細心的肯定發(fā)現了办陷,第三步設置屬性去哪兒了探入,下面咱們就具體說一下播放器包含的屬性
//獲得當前音樂的聲道
NSLog(@"%lu",(unsigned long)audioPlayer.numberOfChannels);
//設置聲道 -1.0左 0.0中間 1.0右面
audioPlayer.pan = -1.0;
//設置音量 默認是1.0 值在0.0到1.0之間
audioPlayer.volume = 1.0;
//獲得速率 必須設置enableRate為YES
audioPlayer.enableRate = YES;
//設置速率0.5是一半的速度 1.0普通 2.0 雙倍速度
audioPlayer.rate =0.5;
//獲得峰值必須設置meteringEnabled為YES
audioPlayer.meteringEnabled = YES;
//更新峰值
[audioPlayer updateMeters];
//獲得當前峰值
NSLog(@"當前峰值:%f",[audioPlayer peakPowerForChannel:2]);
//獲得平均峰值
NSLog(@"平均峰值:%f",[audioPlayer averagePowerForChannel:2]);
//設置播放次數 負數是無限循環(huán) 0是一次 1是兩次······
audioPlayer.numberOfLoops = 1;
//audioPlayer.currentTime可以獲得音樂播放的當前時間
// audioPlayer.duration可以獲得音樂播放的總時間
除此之外,它還有一些代理方法懂诗,不過用代理方法之前別忘先導入代理并且掛上代理
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error{
NSLog(@"解碼出現錯誤的時候調用");
}
- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{
NSLog(@"被打擾開始中斷的時候調用比如突然來電話了");
}
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{
NSLog(@"中斷結束的時候調用");
}
有興趣的朋友也可以把音樂播放器封裝一個方法或是一個小類 用的時候直接調用封裝的方法就可以就可以