AVFoundation AudioPlayer播放多个曲目?

时间:2014-02-22 17:50:01

标签: ios avfoundation

我发现使用AVFoundation可以直接播放单曲,但在查看苹果指南之后我似乎无法播放多首曲目。我在哪里做错了?在下面的queuePlayer中是AVQueuePlayer的一个实例,据我所知,它是AVAudioPlayer的一个子类。

在viewDidLoad中,首先我创建路径到我的.mp3文件在主包中的位置:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSArray *mp3s = [[NSBundle bundleWithPath:[paths objectAtIndex:0]] pathsForResourcesOfType:@"mp3" inDirectory:nil];

然后我分配并初始化:

self.queuePlayer = [[AVQueuePlayer alloc] initWithItems:mp3s];

然后从 - (IBAction)播放我调用queuePlayer播放如下:

[self.queuePlayer play];

但没有任何反应。它在苹果文档中说我可以把它称为像AVAudioPlayer的实例一样播放,那怎么会不玩呢?我在这里错过了什么?

帮助表示赞赏!

干杯。

1 个答案:

答案 0 :(得分:1)

<强>更新

您无需从Documents目录中搜索。 (即你的path数组)

要从NSBundle获取文件,您需要使用

NSArray *mp3s = [[NSBundle mainBundle] pathsForResourcesOfType:@"mp3" inDirectory:nil];

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);会给你这样的路径 -

  

/ Users / me / Library / Application Support / iPhone   模拟器/用户/应用/ 6958D21C-C94B-4843-9EF1-70406D0CA3A3 /文件

然后您使用此路径从项目的NSBundle获取文件。那不会有用。

尝试使用NSLog数组&amp;的mp3看你自己。问题不在于Player代码。这是你的道路。现在您必须决定是否要从Documents目录或Project's Bundle获取文件。

请阅读:

  

bundle是具有标准化层次结构的目录   它包含可执行代码和该代码使用的资源。

关于文档目录(仅限应用程序)

  

您的应用程序(在非越狱设备上)以“沙盒”运行   环境。这意味着它只能访问文件和目录   在其内容中。例如文件和图书馆。

请参阅File System Programming Guide