关于iOS获取音乐库的音乐信息 (获取本地音乐文件)

年前在项目开发的时候,当时有一个上传本地音乐文件的一个功能。需求是从本地获取音乐文件,并对音乐文件进行截取。

实现获取本地音乐文件的方法的代码如下:

MPMediaQuery *allMp3 = [[MPMediaQuery alloc] init];
        // 读取条件
        MPMediaPropertyPredicate *albumNamePredicate =
        [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];
        [allMp3 addFilterPredicate:albumNamePredicate];

        NSLog(@"Logging items from a generic query...");
        self.allMusicItems = [allMp3 items];
        for (MPMediaItem *song in _allMusicItems) {
//            NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
            NSString *songTitle = song.title;
            NSLog (@"%@, %@, %@", songTitle, song.assetURL,song.artist);
        }
/**
  注:
 使用 - (id) valueForProperty: (NSString *) property 的方法获取音乐的名称和使用点语法出来的结果是一样的。
 这是苹果给出的解释:

 MP_EXTERN NSString * const MPMediaItemPropertyPersistentID NS_AVAILABLE_IOS(4_2);               // filterable
@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID NS_AVAILABLE_IOS(5_0);

MP_EXTERN NSString * const MPMediaItemPropertyMediaType;                                        // filterable
@property (nonatomic, readonly) MPMediaType mediaType NS_AVAILABLE_IOS(7_0);

MP_EXTERN NSString * const MPMediaItemPropertyTitle;                                            // filterable
@property (nonatomic, readonly, nullable) NSString *title NS_AVAILABLE_IOS(7_0);

MP_EXTERN NSString * const MPMediaItemPropertyAlbumTitle;                                       // filterable
@property (nonatomic, readonly, nullable) NSString *albumTitle NS_AVAILABLE_IOS(7_0);
*/ 

但是,出现问题了,获取本地的音乐文件除了音乐文件的路径(也就是assetURL)为空,获取不到,其它的音乐名称,歌手都可以获得,开始以为是哪里出现问题,开始各种百度,谷歌,终于找到问题了

由于iPhone 自带的音乐软件Music的推出.从iPod取出来的音乐MPMediaItemPropertyAssetURL属性可能为空.
这是因为iPhone自带软件Music对音乐版权的保护,对于所有进行过 DRMProtection(数字版权加密保护)的音乐都不能被第三方APP获取并播放.即使这些音乐已经下载到本地.但是还是可以播放本地未进行过数字版权加密的音乐.也就是您自己手动导入的音乐。

那这也太坑了,自己获取音乐文件还要在手动导入吗? 所以商量过后,果断砍掉这个小功能。所以,在这里记录一下,如果给做相关功能开发的人提示。这个问题也没有妥善解决,如果谁有解决的了,也可以告诉我们,大家一起学习吗?

这里有一篇详细介绍关于获取音乐库音乐文件的相关博客 http://www.cnblogs.com/lyanet/archive/2013/03/27/2985019.html

你可能感兴趣的:(iOS篇)