在swift中找到iPod库中歌曲的位置?

时间:2016-11-16 12:21:16

标签: ios swift mpmediaitem mpmediapickercontroller

当用户从iPod库中选择音频时,我会引用MPMediaItem。我使用

获取该项目的资产网址

let url = item.valueForProperty(MPMediaItemPropertyAssetURL) 但是这并没有给我文件的确切物理位置,而是给了我一个url w.r.t iPod库。

ipod-library://item/item.mp3?id=1840064795502796074

有没有办法从iPod库中获取歌曲的物理网址?

编辑 - 实际上我想从物理文件中提取NSData并将其发送到我的后端服务器,所以我需要物理文件URL而不是相对URL

1 个答案:

答案 0 :(得分:1)

音乐文件由MPMediaItem实例表示。您可以使用通过MPMediaQuery检索它们,例如:

// All
let mediaItems = MPMediaQuery.songsQuery().items
// Or you can filter on various property
// Like the Genre for example here
var query = MPMediaQuery.songsQuery()
let predicateByGenre = MPMediaPropertyPredicate(value: "Rock", forProperty: MPMediaItemPropertyGenre)
query.filterPredicates = NSSet(object: predicateByGenre)

此时,您拥有音乐应用程序库中包含的所有(或部分过滤器)歌曲,因此您可以在设置播放列表队列后使用MPMusicPlayerController进行播放:

let mediaCollection = MPMediaItemCollection(items: mediaItems)

let player = MPMusicPlayerController.systemMusicPlayer()
player.setQueueWithItemCollection(mediaCollection)

player.play()

可能有可能从歌曲中以某种方式访问​​元数据(标题,流派,艺术家......)。

这可能不适用于模拟器。