ios – 如何让另一个应用程序正在播放音频

参见英文答案 >
Audio Information of Current Track iOS Swift                                    1个

如何访问另一个应用程序当前播放的音频 – 实际的音频项目,但欢迎使用元数据.我可以看到这个问题已被提出很多,但多年来提供的解决方案很少.我理解苹果的理念可能不希望应用程序能够做到这一点.我也明白这样的请求可能在iOS API之外.话虽如此,我真的很想解决某种问题.

从逻辑上讲,我觉得

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 

应该返回当前正在播放的内容的信息;但是,正如其他人所提到的,对于在应用程序之外播放的音频,此值始终为零.值得注意的是,流行的音频应用程序似乎无法使用MPNowPlayingInfoCenter类,使得此类音频无法显示.

如果使用默认音乐应用程序,可以使用

MPMusicPlayerController.systemMusicPlayer().nowPlayingItem

但是,通过播客应用,Spotify,Pandora,Safari等访问音频播放的更一致方式是什么?

有没有人找到解决方案?是否有任何旧的Objective-C框架支持此功能?

如果有某种方法可以访问当前正在播放的项目的音频路径,则一种方法可能是可行的.例如,如果我可以获取当前播放项目的路径,我可以从中创建一个AV对象:

AVAudioPlayer(contentsOfURL: audioUrl)

那么我有没有办法获得当前正在播放的项目的音频网址并以这种方式使用它?

另一种方法更好吗?

如果本机解决方案不存在,是否可以将某些东西放在一起以使其工作?任何建议或想法欢迎.

编辑:我不相信任何人都能做到这一点;但是,我想很多人都愿意.如果已经解决了这个问题,请链接它! 🙂

最佳答案 目前在iOS中无法实现.只需将AVAudioSession类别选项更改为.MixWithOthers,从其他应用程序获取信息歌曲信息的选项将导致您的nowPlayingInfo被忽略.

iOS仅考虑将非混合应用程序包含在MPNowPlayingInfoCenter中,因为如果有多个混音应用程序同时播放,则存在(例如)控制中心中显示的应用程序存在不确定性.

提案:一种选择是使用音乐指纹识别算法通过从您的应用程序录制它来识别正在播放的内容.

这方面的一些有趣项目:

Gracenote https://developer.gracenote.com/ Gracenote(由索尼拥有)开辟了它的SDK和API,并拥有一个合适的开发门户网站.

EchoNest& Spotify API http://developer.echonest.com/自2016年3月起与Spotify融合

ACRCloud https://www.acrcloud.com/为电视广告,音乐技术等自定义文件提供ACR解决方案

点赞