swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空
Posted
技术标签:
【中文标题】swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空【英文标题】:Field `lyrics` is empty for MPMediaItem of the current playing song in swift, ios 12+ 【发布时间】:2019-12-07 10:22:33 【问题描述】:我也有类似的问题:
How do I get the lyrics of the currently playing song in Swift 4? - 这里没有答案 iPhone song lyrics access - 回答无效 How to get lyrics for Now Playing song in ios10 (Swift 3) - 回答无效我需要获取当前播放歌曲的歌词。
如果我只是尝试从媒体项中获取歌词,则会得到空结果:
let musicPlayerController = MPMusicPlayerController.systemMusicPlayer
// ...
if let nowPlayingItem = musicPlayerController.nowPlayingItem
// We have empty string here
if let lyrics = nowPlayingItem.lyrics
print("Lyrics: \(lyrics)")
我已尝试按照上述答案中的建议通过资产 url 获取歌词,但它不起作用,资产 url 始终为零。
let musicPlayerController = MPMusicPlayerController.systemMusicPlayer
// ...
if let nowPlayingItem = musicPlayerController.nowPlayingItem
if let songUrl = nowPlayingItem.value(forProperty: MPMediaItemPropertyAssetURL) as? URL
print("song url: \(songUrl)")
let songAsset = AVURLAsset(url: songUrl)
if let lyricsFromAsset = songAsset.lyrics
print("Lyrics from asset: \(lyricsFromAsset)")
我也尝试过但没有成功(也相应地得到 nil 和空字符串):
print("asset url: \(nowPlayingItem.assetURL)")
print("lyrics from value for property: \(nowPlayingItem.value(forProperty: MPMediaItemPropertyLyrics))")
我确切地知道这首歌有歌词,因为我在 iPhone 上的 Apple Music 应用程序中看到了这首歌的歌词。我试着为这首歌找歌词:Queen - Bohemian Rhapsody。
有人可以帮忙从苹果音乐中获取当前播放歌曲的歌词吗?
【问题讨论】:
我遇到了同样的问题你有解决办法吗? 【参考方案1】:我们在这里谈论的是本地文件吗?我不确定它如何处理 Apple Music 文件,但对于本地文件,这种方法在检索歌词方面有 100% 的成功率。
extension MPMediaItem
func lyrics() -> String?
guard let url = assetURL else return nil
let ass = AVAsset(url: url)
return ass.lyrics
【讨论】:
此方法不适用于本地文件。还有其他解决办法吗?以上是关于swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空的主要内容,如果未能解决你的问题,请参考以下文章