ios – 当MPMediaItem assetURL为零时如何解决?

ios – 当MPMediaItem assetURL为零时如何解决?,第1张

概述我正在研究查看用户视频的代码,并通过带有URL的AVPlayerItem将它们传递给AVPlayer. 要获取iOS设备上的所有视频,您可以执行以下 *** 作: let videoNumber = MPMediaType.anyVideo.rawValuelet predicate = MPMediaPropertyPredicate.init(value: videoNumber, forPrope 我正在研究查看用户视频的代码,并通过带有URL的AVPlayerItem将它们传递给AVPlayer.

要获取iOS设备上的所有视频,您可以执行以下 *** 作:

let vIDeoNumber = MPMediaType.anyVIDeo.rawValuelet predicate = MPMediaPropertyPredicate.init(value: vIDeoNumber,forProperty: MPMediaItemPropertyMediaType)let query = MPMediaquery.init()query.addFilterPredicate(predicate)if let items = query.items{    mediaCollection = MPMediaItemCollection(items: items)    // -1 would indicate an error condition    print("number of items in collection is \(mediaCollection?.count ?? -1)")}

当您从items数组中选择要使用的MPMediaItem时,应该有一个assetURL.

麻烦的是,在我的设备上,我的所有assetURL属性都是NulL.巧合的是,虽然每个这些项的hasProtectedAsset都是false,但每个项的isCloudItem都是true.

我怎样才能提出一个有效的assetURL,我可以传递给任何媒体播放器?开发人员无法获得适当的参考资料并且感觉有点虚假.访问用户iPod库中的媒体.

解决方法 由于两个原因,MPMediaItemPropertyAssetURL / MPMediaItem assetURL为null / nil.

>音乐不会下载到您的设备,而是添加到音乐中
仅限图书馆.
>音乐已加载但受DRM保护.

受DRM保护的资产无法使用AVPlayer播放,它只能使用MPMusicPlayer播放.因此,在继续使用AVPlayer之前,您必须先检查两件事.

> MPMediaItemPropertyAssetURL是零?
> MPMediaItem受到保护?

请看下面的代码……

let itemUrl = targetMPMediaItem?.value(forProperty: MPMediaItemPropertyAssetURL) as? URLif itemUrl != nil {    let theAsset = AVAsset(url: itemUrl!)    if theAsset.hasProtectedContent {        // Its DRM protected    } else {        // Do whatever you anat to do    }} else {    //probably the asset is not downloaded to this device}
总结

以上是内存溢出为你收集整理的ios – 当MPMediaItem assetURL为零时如何解决?全部内容,希望文章能够帮你解决ios – 当MPMediaItem assetURL为零时如何解决?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存