我该如何在iPhone上编程播放MP3音频文件?

9
我想在我的应用程序中包含一个MP3文件,并按需播放它。不幸的是,我不确定如何开始。我一直在阅读有关.caf文件的内容,但不确定这些是什么。
如果可能的话,我正在寻找一步一步的指导。
4个回答

16

以下是我在xCode 4.2中播放mp3的步骤:

1)将AVFoundation.framework框架导入您的项目中。

2)在您的项目的ViewController.h文件中添加:#import "AVFoundation/AVAudioPlayer.h"

#import <UIKit/UIKit.h>
#import "AVFoundation/AVAudioPlayer.h"

@interface ViewController : UIViewController

@end

3) 拖拽你的mp3文件yoursoundfile.mp3到你的根项目浏览器中

4) 修改ViewController.m中的-(void)viewDidLoad函数:

- (void)viewDidLoad{
    [super viewDidLoad];
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"yoursoundfile"
                                         ofType:@"mp3"]];
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
                                  initWithContentsOfURL:url
                                  error:nil];
    [audioPlayer play];
}

一旦您启动程序,它将播放声音。您可以通过更改音量或何时播放、停止等方式进行自定义以适应您的应用。


8

2

使用终端中的afconvert将您的MP3转换为.caf格式。使用man afconvert查找更多信息。

然后

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: name ofType: @"caf"];

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

AVAudioPlayer *player = [super initWithContentsOfURL: fileURL error: nil];
[fileURL release];
[player play];

好的。我应该把 .caf 文件放在项目的哪个位置?是放在资源文件夹里吗? - AngryHacker
是的。资源文件夹很好。如果您有多个 .cafs 文件并希望将它们放在自己的文件夹中,您可以创建子文件夹。 - mahboudz
2
另外需要知道的一点是,如果您想在没有延迟的情况下播放声音,则可以调用[player prepareToPlay]进行预加载。 但是,调用[player stop]可能会卸载它,从而强制-play重新加载。-暂停会停止播放,并且不会卸载。(您可以在暂停后手动设置播放器从开头开始播放) - mahboudz
这段代码对我来说不起作用。我把它放在了ViewDidLoad中。 - Vineesh TP

1

2
链接#1是作弊 - 我实际上不需要一个界面,只需要一个声音。链接#2在Mac上播放它,而不是iPhone。 - AngryHacker
嗨,AngryHacker:是的,我有点想到第一个链接不是你要找的 - 但我还是包含了它,以防你确实在寻找那个。至于第二个链接,里面有一个“AudioStreamer”项目的链接,其中包括iPhone和Mac版本的源代码。 - PF1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接