gpt4 book ai didi

cocoa - 如何找到Lion 10.7中AVAudioPlayer支持的所有格式的音频文件?

转载 作者:行者123 更新时间:2023-12-03 17:30:29 25 4
gpt4 key购买 nike

我想使用这样的代码。

NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
[query setSearchScopes: [NSArray arrayWithObject: [NSURL fileURLWithPath:@"/Users/Someone/Music" isDirectory:YES]]];
[query setPredicate: predicate];
...
...

现在我该如何设置“谓词”来过滤掉那些格式不受支持的文件?

kMDItemCodezs,kMDItemMediaTypes,kMDItemContentType,kMDItemKind?

我应该使用哪一个? Lion 10.7 中 AVAudioPlayer 支持的格式对应的这些属性的所有可能值是什么?非常感谢。

最佳答案

要获取最支持的格式列表,您可以使用 AudioFileGetGlobalInfoAudioToolbox框架来获取 Core Audio 支持的 UTI(使用 kAudioFileGlobalInfo_AllUTIs ):

UInt32 size;
NSArray *all;
OSStatus err;

err = AudioFileGetGlobalInfoSize(kAudioFileGlobalInfo_AllUTIs, 0, NULL, &size);
if (err == noErr)
err = AudioFileGetGlobalInfo(kAudioFileGlobalInfo_AllUTIs, 0, NULL, &size, &all);
if (err == noErr)
NSLog(@"UTIs: %@", all);
[all release];

在 10.7 上,这给了我:

"public.aiff-audio",
"public.ulaw-audio",
"org.3gpp.adaptive-multi-rate-audio",
"com.microsoft.waveform-audio",
"public.3gpp2",
"com.apple.coreaudio-format",
"public.3gpp",
"public.mp3",
"public.au-audio",
"public.mpeg-4-audio",
"public.mpeg-4",
"com.apple.m4a-audio",
"public.aifc-audio"

不幸的是,UTI 没有为 Core Audio 支持的一些更晦涩的数据格式(例如 .mp1/.mp2 )定​​义;如果您对上述子集感到满意,那么只需使用 UTI。

然后将它们变成 NSMetadataQuery ( kMDItemContentType 代表 kAudioFileGlobalInfo_AllUTIs )。如果您想覆盖其余格式,可以通过 HFS 类型和扩展名进行匹配:kMDItemFSTypeCode对于 kAudioFileGlobalInfo_AllHFSTypeCodes ,以及 kMDItemFSName 的通配符匹配对于 kAudioFileGlobalInfo_AllExtensions 。您可以使用afconvert -hf显示这两个。

NSMetadataQuery 匹配当然不会查看所有文件的内部,因此它仍然会找到用 .mp3 重命名的文本文件。扩大。由于 Spotlight 确实尝试索引其他音频属性,您可以尝试检查 kMDItemAudioBitRate等等;这些在实际上不是音频文件的文件中将会丢失。根据您希望过滤的准确程度,您还可以尝试打开每个文件以查看其是否可以播放。

关于cocoa - 如何找到Lion 10.7中AVAudioPlayer支持的所有格式的音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136153/

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