我有mp3
文件存储在 iPhone 上,我的应用程序应该能够读取ID3
信息,即以秒为单位的长度、艺术家等。有谁知道如何做到这一点或在 Objective-C 中使用什么库?
非常感谢您的想法。
我有mp3
文件存储在 iPhone 上,我的应用程序应该能够读取ID3
信息,即以秒为单位的长度、艺术家等。有谁知道如何做到这一点或在 Objective-C 中使用什么库?
非常感谢您的想法。
可以使用AudioToolbox 框架kAudioFilePropertyInfoDictionary
的功能读取 ID3 信息以检索音频文件的属性。AudioFileGetProperty
iphonedevbook.com上提供了详细说明
编辑:原始链接现已关闭。InformIT有一些类似的示例代码,但并不完整。
查看媒体播放器框架:
这要求有问题的 MP3 是手机上 iPod 库的一部分。
例如,确定手机上每个媒体文件的名称(包括电影、播客等):
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [everything items];
for (MPMediaItem *item in itemsFromGenericQuery) {
NSString *itemTitle = [item valueForProperty:MPMediaItemPropertyTitle];
// ...
}
似乎可以使用以下属性:
MPMediaItemPropertyMediaType
MPMediaItemPropertyTitle
MPMediaItemPropertyAlbumTitle
MPMediaItemPropertyArtist
MPMediaItemPropertyAlbumArtist
MPMediaItemPropertyGenre
MPMediaItemPropertyComposer
MPMediaItemPropertyPlaybackDuration
MPMediaItemPropertyAlbumTrackNumber
MPMediaItemPropertyAlbumTrackCount
MPMediaItemPropertyDiscNumber
MPMediaItemPropertyDiscCount
MPMediaItemPropertyArtwork
MPMediaItemPropertyLyrics
MPMediaItemPropertyIsCompilation
在不通过媒体播放器框架的情况下这样做会有些困难,并且需要一个外部框架。
没有多少没有 GPL 的 ID3 解析库。有一个 Objective-C框架可能被修改为在静态链接时在 iPhone 上工作,但它是 LGPL。为了使用静态链接的二进制文件满足 LGPL 的条款,您必须提供足够多的中间组件,以便有人可以将其与他们自己的库版本重新链接,这对于 iPhone 应用程序来说是困难的(但并非不可能)。当然,由于我没有处于必须这样做的位置,因此我实际上没有与律师讨论过,而且由于我不是律师,因此您不应该将其视为权威。
如果您不想咨询律师,最好的选择是使用更自由许可的 C 库,例如libID3,并将其包装在一些 Objective C 类中。我还建议直接包含代码而不是处理所有静态库构建和链接问题,但这只是个人风格的事情。