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

时间:2016-05-12 22:03:16

标签: ios iphone swift avfoundation

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

逻辑上,我觉得

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 

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

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

MPMusicPlayerController.systemMusicPlayer().nowPlayingItem

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

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

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

AVAudioPlayer(contentsOfURL: audioUrl)

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

另一种方法更好吗?

如果本机解决方案不存在,是否可以提交某些内容以使其正常工作?任何建议或想法欢迎。

编辑:我不相信任何人能够实现这一目标;但是,我想很多人都愿意。如果已经解决了这个问题,请链接它! :)

1 个答案:

答案 0 :(得分:2)

这在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解决方案,例如电视广告,音乐tec