我正在开展一个项目,我需要在AVPlayer中播放iTunes Library中的歌曲.为此,我正在从iTunes资料库获取所选歌曲的URL“ipod-library://item/item.mp3?id = 1577682869916034242”并在AVPlayer中播放相同的歌曲.几乎所有歌曲都可以播放,但是对于少数歌曲,MPMediaItemPropertyAssetURL会返回nil URL.还会收到以下错误
-[AVAssetReader initWithAsset:error:] invalid parameter not satisfying: asset != ((void *)0)
有什么建议吗?为什么我从中得到零值
MPMediaItemPropertyAssetURL
还有任何想法如何流式传输或转换DRM Protected Media轨道到NSData?
请指教.
最佳答案 MPMediaItemPropertyAssetURL可以返回null,原因有两个.
>音乐不会下载到您的设备,而是添加到音乐中
仅限图书馆.
>音乐已加载但受DRM保护.
受DRM保护的资产无法使用AVPlayer播放,它只能使用MPMusicPlayer播放.因此,在继续使用AVPlayer之前,您必须先检查两件事.
> MPMediaItemPropertyAssetURL是零?
> MPMediaItem受到保护?
请看下面的代码……
MPMediaItem *theChosenSong = [[mediaItemCollection items] firstObject];
NSURL *assetURL = [theChosenSong valueForProperty:MPMediaItemPropertyAssetURL];
if(assetURL) {
BOOL bIsProtected = theChosenSong.protectedAsset;
if(!bIsProtected) {
// Do whatever you want to do
NSLog(@"Its not protected");
}
else {
NSLog(@"Its DRM protected");
}
}
else {
NSLog(@"DRM protected or not downloaded locally");
}