Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift4.0 iOS 12中使用MediaPlayer库获取歌词失败_Ios_Swift_Apple Music - Fatal编程技术网

在Swift4.0 iOS 12中使用MediaPlayer库获取歌词失败

在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

在过去的几个小时里,我研究了如何从我的苹果音乐库中的歌曲中提取歌词,并在这里阅读了其他帖子,但在我的环境中并没有成功。然后我想这可能是因为苹果音乐的会员资格。我假设订阅(而不是购买歌曲)的用户不允许访问库中的任何歌曲或其他内容

Swift 4.0 iOS 12.2

正如其他帖子所说,我实现了MediaPlayer

我创建了一个MPMediaPickerController实例,并将其委托设置为showsCloudItems=false

选了一首歌后,我就这么做了

 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遗憾地说没有。看来苹果不允许这样做,所以我放弃了。