首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字段‘`lyrics`’对于当前播放歌曲的MPMediaItem来说是空的

字段‘`lyrics`’对于当前播放歌曲的MPMediaItem来说是空的
EN

Stack Overflow用户
提问于 2019-07-30 05:09:40
回答 1查看 380关注 0票数 3

我也有类似的问题,比如:

我需要为当前播放的歌曲找到歌词。

如果我只想从一个媒体项目中得到歌词,我就会得到空洞的结果:

代码语言:javascript
复制
let musicPlayerController = MPMusicPlayerController.systemMusicPlayer

// ...

if let nowPlayingItem = musicPlayerController.nowPlayingItem {
    // We have empty string here
    if let lyrics = nowPlayingItem.lyrics {
        print("Lyrics: \(lyrics)")
    }
}

我试着像上面的答案中所建议的那样,通过资产url来获得歌词,但是它不起作用,资产url总是零的。

代码语言:javascript
复制
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)")
        }
    }
}

我也尝试过,但没有成功(也相应地获得了零和空字符串):

代码语言:javascript
复制
print("asset url: \(nowPlayingItem.assetURL)")
print("lyrics from value for property: \(nowPlayingItem.value(forProperty: MPMediaItemPropertyLyrics))")

我很清楚这首歌有歌词,因为我在iPhone上的Apple应用上看到了这首歌。我试着为这首歌找歌词:皇后-波西米亚狂想曲。

有人能帮我从苹果音乐中得到当前播放歌曲的歌词吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-10 09:09:59

我们说的是本地文件吗?我不知道它如何与苹果音乐文件工作,但对于本地文件,这种方法有百分之百的成功率在检索歌词。

代码语言:javascript
复制
extension MPMediaItem {
    func lyrics() -> String? {
        guard let url = assetURL else { return nil }
        let ass = AVAsset(url: url)
        return ass.lyrics
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57264656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档