我在iPhone上存储了mp3
个文件,我的应用程序应该能够读取ID3
信息,即以秒为单位的长度,艺术家等。
有谁知道如何在Objective-C中使用这个或使用哪个库?
非常感谢您的想法。
答案 0 :(得分:19)
可以使用AudioToolbox框架的kAudioFilePropertyInfoDictionary
函数读取ID3信息,检索音频文件的AudioFileGetProperty
属性。
编辑:原始链接现已关闭。 InformIT有一些类似的示例代码,但它并不完整。
答案 1 :(得分:5)
了解媒体播放器框架:
这要求有问题的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
不经过媒体播放器框架这样做会有些困难,需要一个外部框架。
答案 2 :(得分:3)
没有很多ID3解析库没有GPL。在Objective-C framework上有可能被修改为在静态链接时可以在iPhone上运行,但它是LGPL。为了满足LGPL与静态链接二进制文件的条款,您必须提供足够的中间组件,以便有人可以使用他们自己的库版本重新链接它,这对于iPhone应用程序来说很难(但并非不可能)。当然,因为我没有做过必须这样做的事情,所以我实际上并没有和律师讨论过这个问题,因为我不是一个律师,所以你不应该把它作为权威。
如果您不想咨询律师,最好的办法是使用更加自由许可的C库,如libID3,并将其包含在某些Objective C类中。我还建议直接包含代码而不是处理所有静态库构建和链接问题,但这只是个人风格的事情。