AVAudioPlayer
首先,添加系统库AVFoundation.framework
@interfaceAudioPlayerViewController ()
{
IBOutlet UISlider *_proSlider;
IBOutlet UISlider *_slider1;
IBOutlet UISlider *_slider2;
NSTimer *_timer;
AVAudioPlayer *_player;
IBOutlet UILabel *_label1;
IBOutlet UILabel *_label2;
IBOutlet UILabel *_label3;
IBOutlet UILabel *_label4;
}
//播放
-(IBAction)play:(id)sender;
//暂停
-(IBAction)pause:(id)sender;
//进度
-(IBAction)setProgress:(id)sender;
//音量
-(IBAction)setVolume:(id)sender;
//声道
-(IBAction)setPan:(id)sender;
//速度
-(IBAction)setRate:(id)sender;
@end
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *path = [[NSBundlemainBundle] pathForResource:@"Beat It"ofType:@"mp3"];
NSLog(@"%@",path);
//initWithContentsOfURL 是用来播放一首歌的 ,如果想要换歌的话,就再创建一个avaudioplay,路径用下一首歌的地址,把上一个player释放
//本地路径用 fileURLWithPath 来转成url
_player = [[AVAudioPlayeralloc] initWithContentsOfURL:[NSURLfileURLWithPath:path] error:nil];
//准备播放
[_playerprepareToPlay];
//开启变速
[_playersetEnableRate:YES];
//开启峰值
[_playersetMeteringEnabled:YES];
// Do any additional setup after loading the view from its nib.
}
//播放
-(void)play:(id)sender
{
[_playerplay];
// 1/60
_timer = [NSTimerscheduledTimerWithTimeInterval:0.1target:selfselector:@selector(refresh)userInfo:nilrepeats:YES];
}
//刷新
-(void)refresh
{
//当前进度 =当前时间 / 总时间
float pro =_player.currentTime /_player.duration;
[_proSlidersetValue:pro animated:YES];
//刷新峰值
[_playerupdateMeters];
//平均峰值,最高峰值
float avg = [_playeraveragePowerForChannel:0];
float peak = [_playerpeakPowerForChannel:0];
float avg1 = [_playeraveragePowerForChannel:1];
float peak1 = [_playerpeakPowerForChannel:1];
//NSLog(@"avg is %f , peak is %f",avg,peak);
_slider1.value = avg;
_slider2.value = peak;
_label1.frame = CGRectMake(54, 324+126, 25,324 * (avg/100));
_label2.frame = CGRectMake(105, 324+126, 25,324 * (peak/100));
_label3.frame = CGRectMake(158, 324+126, 25,324 * (avg1/100));
_label4.frame = CGRectMake(214, 324+126, 25,324 * (peak1/100));
}
//暂停
-(void)pause:(id)sender
{
[_playerpause];
if (_timer != nil) {
[_timerinvalidate];
_timer = nil;
}
}
//设置进度
-(void)setProgress:(id)sender
{
//当前时间 =总时间 * 进度
UISlider *slider = (UISlider *)sender;
float currentTime = _player.duration * slider.value;
_player.currentTime = currentTime;
}
//设置音量
-(void)setVolume:(id)sender
{
UISlider *slider = (UISlider *)sender;
_player.volume = slider.value;
}
//设置声道
-(void)setPan:(id)sender
{
UISlider *slider = (UISlider *)sender;
_player.pan = slider.value;
}
//速度
-(void)setRate:(id)sender
{
UISlider *slider = (UISlider *)sender;
_player.rate = slider.value;
}