音频播放 AVAudioPlayer

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;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值