gpt4 book ai didi

ios - AVFoundation AudioPlayer 播放多个轨道?

转载 作者:行者123 更新时间:2023-11-29 03:13:31 27 4
gpt4 key购买 nike

我发现使用 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)play 我调用 queuePlayer 像这样播放:

[self.queuePlayer play];

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

感谢帮助!

干杯。

最佳答案

更新:

您不需要从文档目录中搜索。 (即您的 path 数组)

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

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

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

/Users/me/Library/Application Support/iPhone Simulator/User/Applications/6958D21C-C94B-4843-9EF1-70406D0CA3A3/Documents

然后您将使用此路径从项目的 NSBundle 获取文件。这永远不会起作用。

尝试将 NSLogmp3 数组结合起来看看。问题不在播放器代码中。这是你的路。现在您必须决定是否要从 Documents 目录或 Project's Bundle 获取文件。

请阅读此处:

A bundle is a directory with a standardized hierarchical structure that holds executable code and the resources used by that code.

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

Your app only (on a non-jailbroken device) runs in a "sandboxed" environment. This means that it can only access files and directories within its own contents. For example Documents and Library.

参见 File System Programming Guide

关于ios - AVFoundation AudioPlayer 播放多个轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com