2014-01-10 音频播放之AVAudioPlayer

  AVAudioPlayer支持本地播放,不支持流媒播放


  //获取NSBundle下的本地歌曲

    NSString *string = [[NSBundlemainBundle]pathForResource:@"蓝莲花 - 张恒远,赵晗" ofType:@"mp3"];

    

   //注意方法fileURLWithPath 和URLWithString

    /*

     前者为打开本地file

     后者为把String类型转换为URL网络地址

     */

    NSURL *url = [NSURLfileURLWithPath:string];

    

   //注意此时的audio为全局对象否则播放不了

   audio = [[AVAudioPlayeralloc]initWithContentsOfURL:urlerror:nil];

    

   //准备播放加入一个队列 并没有开始播放

    [audioprepareToPlay];

    if ([audio play]) {

        NSLog(@"音乐开始播放");

    }

   //numberOfLoops为设定播放次数 默认为1次

   audio.numberOfLoops =3;

    /*

     此外常用的属性有:

     //调节音量  范围是0.0-1.0之间

    1. audio.volume = 0.5

     //设置歌曲的总时长

     2.audio.duration

     //设定当前播放的进度

     3.audio.currentTime = 15.0

     //设定声道数 它是个只读属性

     4.NSUInteger channels = audio.numberOfChannels;

     

     [audio play];//播放

     [audio stop];//停止

     [audio pause];//暂停

     */




code:

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>//导入包


@interface MainViewController :UIViewController<AVAudioPlayerDelegate>

{

    AVAudioPlayer *audio ;//播放器

    NSTimer *timer;//定时器

    BOOL isPlaying;//判断是否播放

}

@property (weak, nonatomic)IBOutlet UISlider *volumeSlider;//音量调节

@property (weak, nonatomic)IBOutlet UISlider *progressSlider;//进度调节

@property (weak, nonatomic)IBOutlet UILabel *currTime;//显示播放时间

@property (weak, nonatomic)IBOutlet UILabel *durationTime;//显示总时间

@property (weak, nonatomic)IBOutlet UIButton *playBtn;//播放按钮



@end





#import "MainViewController.h"

@interface MainViewController ()


@end


@implementation MainViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [superviewDidLoad];

    

    //获得Bundle下的MP3文件

    NSString *path = [[NSBundlemainBundle] pathForResource:@"蓝莲花 - 张恒远,赵晗" ofType:@"mp3"];

    //String类型转化为url

    NSURL *url = [NSURLfileURLWithPath:path];

    

    audio = [[AVAudioPlayeralloc] initWithContentsOfURL:url error:nil];

    

    audio.delegate =self;

    

    [audioprepareToPlay];

    

    

    

    self.progressSlider.maximumValue =audio.duration;//给进度条赋最大值 音乐的总长度

    

    self.durationTime.text = [NSStringstringWithFormat:@"%d",(int)audio.duration];//赋值音乐的最大长度

    

   timer =  [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfselector:@selector(timeAction)userInfo:nilrepeats:YES];

    

}

//显示时间以00:00格式

-(void)showTime

{

    

    if ((int)audio.currentTime %60 < 10) {

        self.currTime.text = [NSStringstringWithFormat:@"%d:0%d",(int)audio.currentTime / 60, (int)audio.currentTime %60];

    } else {

        self.currTime.text = [NSStringstringWithFormat:@"%d:%d",(int)audio.currentTime / 60, (int)audio.currentTime %60];

    }

    

    

    if ((int)audio.duration %60 < 10) {

        self.durationTime.text = [NSStringstringWithFormat:@"%d:0%d",(int)audio.duration /60, (int)audio.duration %60];

    } else {

        self.durationTime.text = [NSStringstringWithFormat:@"%d:%d",(int)audio.duration /60, (int)audio.duration %60];

    }

}



//监听当前时间和进度条的动态

- (void)timeAction

{

    [self showTime];

    self.progressSlider.value =audio.currentTime;

}


- (IBAction)progressAction:(UISlider *)sender

{

    //设置当前的播放进度时间

    audio.currentTime = sender.value;

}

- (IBAction)volumnAction:(UISlider *)sender

{

    //设置播放器的音量

    audio.volume = sender.value;

}

- (IBAction)playBtn:(UIButton *)sender

{

    //获得当前播放状态

    isPlaying = audio.playing;

    if (isPlaying) {

        [audio pause];

        [sender setTitle:@"播放"forState:UIControlStateNormal];

    }else{

        [audio play];

        [sender setTitle:@"暂停"forState:UIControlStateNormal];

    }

}


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

{


    [timerinvalidate];//关闭timer

    self.progressSlider.value =0.0;

    [self.playBtnsetTitle:@"播放"forState:UIControlStateNormal];


    isPlaying = NO;

}


@end





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值