案例217 播放本地MP3文件

案例说明:

本案例演示了苹果开发中最常使用的播放本地MP3文件的功能,实现了MP3音乐文件的播放、停止功能和播放当前时间、歌曲长度时间的获取。本案例将演示使用MAC系统的基本音频处理类AVAudioPlayer实现简单的MP3音乐文件的音乐播放功能,案例运行界面如下图所示。


关键技术:

MAC系统的基本音频处理类AVAudioPlayer位于AVFoundation中,需要先在工程中引入该Framework.具体方法是:选择工程->BuildPhase->展开Link Binary WithLibraries->操作+,打开选择framework对话框,选择加入AVFoundation.framework到工程,最后拖放到工程framework目录。

AVAudioPlayer包含主要方法和属性如下:

 Play方法是开始播放文件;

 prepareToPlay方法是预加载播放缓存;

 pause 方法是暂停播放;

 stop 方法是停止播放;

duration属性数值返回加载歌曲的播放总时间长度,精确到毫秒;

q  currentTime属性数值返回加载歌曲的当前已经播放的时间;

 

实现过程:

    首先创建工程,按照运行界面效果图在xib的界面文件中,布局播放和停止按钮控件,播放进度条控件申明为scrubSlider,当前播放时间显示LABEL和歌曲总时长LABEL控件,分别申明为 begintxt和maxtxt。 

    接下来在Appdelegate.m文件中实现显示播放进度条的函数 -(void)updateAudioDisplay。实现代码如下:

-(void) updateAudioDisplay {

    //获取当前播放进度   

    _begintxt.stringValue =[NSString stringWithFormat:@"%d",

                            [NSNumbernumberWithInt: player.currentTime]]; 

    //更新播放进度条

    floatpercentDone =

   (player.currentTime/ player.duration)*100;

   _scrubSlider.floatValue=percentDone; }

   播放按钮的响应代码如下:

-(IBAction)PlayMusic:(id)sender{       

   

   if(player){

       player=nil;

    }

_scrubSlider.floatValue=0;

 _begintxt.stringValue =@"0";

  //播放地址的绝对路径

    NSURL*soundUrl=[[NSURL alloc] initFileURLWithPath:@"/Users/tiberx/Desktop/苹果开发案例大全/播放本地mp3文件/mp3Music/mp3Music/荷塘月色.mp3"];

 //初始化播放类实例

   player=[[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];

_maxtxt.stringValue=[NSStringstringWithFormat:@"%d",[NSNumber numberWithInt: player.duration]];

player.meteringEnabled = YES;

[self updateAudioDisplay];

 [playerprepareToPlay];

     //设置播放进度条事件的响应

   NSInvocation *updateAudioDisplayInvocation =

     [NSInvocationinvocationWithMethodSignature:

     [selfmethodSignatureForSelector: @selector (updateAudioDisplay)]];

[updateAudioDisplayInvocation setSelector:@selector (updateAudioDisplay)];

[updateAudioDisplayInvocation setTarget: self];

 //定义每0.01秒计算下进度条显示位置

     audioDisplayUpdateTimer= [NSTimer scheduledTimerWithTimeInterval:0.01

invocation:updateAudioDisplayInvocationrepeats:YES];    [player play]; }

    停止播放的按钮的响应函数代码如下:

-(IBAction)StopMusic:(id)sender{

    [playerstop];

   _scrubSlider.value=0; }

 要使用AVAudioPlayer类,需要在Appdelegate.h文件添加如下包含文件:

          #import<AVFoundation/AVFoundation.h>

最后在xib界面,通过界面控制器,建立播放按钮和停止按钮到对应响应事件的代理连接。具体方法是选择按钮,操作右键菜单界面选择sent actions拖放到左边的App Delegate立方体,选择弹出的对应事件即可。

 

最佳实践:

    实现播放本地MP3文件是项目开发中广泛使用的,如需要给事件添加背景音乐,设计本地音乐播放器等。代码中音乐文件路径是用绝对路径实现的。读者可以利用本书代码,扩展修改为采用程序相对路径予以实现。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值