在Swift4.0 iOS 12中使用MediaPlayer库获取歌词失败
在过去的几个小时里,我研究了如何从我的苹果音乐库中的歌曲中提取歌词,并在这里阅读了其他帖子,但在我的环境中并没有成功。然后我想这可能是因为苹果音乐的会员资格。我假设订阅(而不是购买歌曲)的用户不允许访问库中的任何歌曲或其他内容 Swift 4.0 iOS 12.2 正如其他帖子所说,我实现了MediaPlayer 我创建了一个MPMediaPickerController实例,并将其委托设置为showsCloudItems=false 选了一首歌后,我就这么做了在Swift4.0 iOS 12中使用MediaPlayer库获取歌词失败,ios,swift,apple-music,Ios,Swift,Apple Music,在过去的几个小时里,我研究了如何从我的苹果音乐库中的歌曲中提取歌词,并在这里阅读了其他帖子,但在我的环境中并没有成功。然后我想这可能是因为苹果音乐的会员资格。我假设订阅(而不是购买歌曲)的用户不允许访问库中的任何歌曲或其他内容 Swift 4.0 iOS 12.2 正如其他帖子所说,我实现了MediaPlayer 我创建了一个MPMediaPickerController实例,并将其委托设置为showsCloudItems=false 选了一首歌后,我就这么做了 func mediaPicke
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
player.setQueue(with: mediaItemCollection)
player.play()
let song = player.nowPlayingItem
print(song?.assetURL) // returns nil
print(song?.artist) // returns string
print(song?.hasProtectedAsset) // true or false
if let songUrl = song?.value(forProperty: MPMediaItemPropertyLyrics) as? String {
print(songUrl.isEmpty ? "null" : songUrl)
// let songAsset = AVURLAsset(url: songUrl, options: nil)
// let lyricsText = songAsset.lyrics
// print(lyricsText)
}
dismiss(animated: true, completion: nil)
}
正如您在那里看到的(注释掉),我也尝试了MPMediaItemPropertyAset,但它返回nil。没有返回任何歌词。即使assetURL也返回零
顺便说一下,我在下面实现了这一行以过滤未受保护的资产,
但是什么也没有出现,所以我删除了
picker.showsItemsWithProtectedAssets = false
我想把歌词拿来。但并不成功。有一些代码似乎使之成为可能,所以我想知道为什么失败的原因。这是因为类似DRM的相关法律,还是只是iOS 12中的一些缺陷?谢谢。与您的情况不完全相同,但这将对您有所帮助:谢谢您的提示,但您能否更详细地告诉我STT/TTS将如何帮助您?乍一看,它与MPO无关@SagarChauhanOH我理解您的意思,但正如我在上面编辑的那样,我甚至无法访问返回零的assetURL。也许有什么办法吗?你有什么解决办法吗?@YogeshPatel遗憾的是没有。似乎苹果不允许这样做,所以我放弃了。和你不完全一样,但这会帮助你:谢谢你的提示,但你能更详细地告诉我STT/TTS将如何帮助你吗?乍一看,它与MPO无关@SagarChauhanOH我理解您的意思,但正如我在上面编辑的那样,我甚至无法访问返回零的assetURL。也许有什么办法吗?你找到解决办法了吗?@YogeshPatel遗憾地说没有。看来苹果不允许这样做,所以我放弃了。