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`为空的主要内容,如果未能解决你的问题,请参考以下文章

Swift 跳过当前在 iPhone 上播放的歌曲

如何在 ios 应用程序的 MPMusicPlayerController 中获取当前正在播放的歌曲数据 [关闭]

检测原生iOS Music App中当前正在播放的歌曲信息

Google Cast:从音频设备获取当前正在播放的歌曲

swift版QQ音乐播放器

swift版QQ音乐播放器