我有一个应用程序,它使用.aupreset
个文件和.wav
个样本来定义加载到AUSampler音频单元的乐器。
.aupreset
个文件使用绝对路径引用.wav
个文件。如complete
中所述,如果在原始路径中找不到音频文件,则系统会在捆绑目录, NSLibraryDirectory , NSDocumentsDirectory中进行搜索,以及 NSDownloadsDirectory ,按此顺序。
我可以在应用程序包中使用这些乐器,但现在我正在尝试支持下载的乐器。如果我将内容放在<NSLibraryDirectory>/Sounds/
中,则AUSampler无法找到.wav
个样本,但如果我将其放在<NSDocumentsDirectory>/Sounds/
中,则可以正常使用。我不想把文件目录弄乱,因为该文件夹显示在iTunes中。
这是AUSampler打印的错误:
09:27:25.251 ERROR: [0x19989c310] 372: Failed to locate sample 'file:///Sounds/trance/square-lead/Square-12000Hz.wav'
另外,我甚至无法在NSDownloadsDirectory位置创建目录 - 我只是得到一个不允许操作的错误。
之前有没有人成功从图书馆加载样本?
(这是在iOS 8上。)
答案 0 :(得分:1)
我收到了this explanation from an Apple Engineer:
事实证明,iOS的文档不正确:除了捆绑包之外,AUSampler只会查看NSDocumentDirectory和NSDownloadsDirectory。如果您不打算将其存储在捆绑包中,或者您希望允许用户向应用添加其他内容,则这些是存储特定于应用程序的数据的推荐位置。
对于OSX,NSLibraryDirectory也可用。
但是,根据我自己的测试,您也无法使用NSDownloadsDirectory,因为尝试创建目录会返回错误(&#34;操作无法完成。操作不允许&#34;) 。所以看来iOS上的唯一选项是从bundle或Documents目录加载。
当您还想为其他内容启用iTunes文件共享时,这不是理想的,所以我想到了另一种解决方法:将内容放在任意位置,并在加载.aupreset文件时,重写所有文件引用在将其设置到音频单元之前引用该位置。
答案 1 :(得分:0)
是的,你绝对可以从Library目录中加载样本。 我以为你必须创建库目录,但我错了。这是我想到的Application Support目录。