ios – MPMediaItemPropertyAssetURL返回nil

我正在开展一个项目,我需要在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");
    }
点赞