我发现使用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的实例一样播放,那怎么会不玩呢?我在这里错过了什么?
帮助表示赞赏!
干杯。
答案 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是具有标准化层次结构的目录 它包含可执行代码和该代码使用的资源。
关于文档目录(仅限应用程序)
您的应用程序(在非越狱设备上)以“沙盒”运行 环境。这意味着它只能访问文件和目录 在其内容中。例如文件和图书馆。