Android Visualizer 不会从 Spotify 流媒体音乐中获取音频



我正在制作一个用于流媒体Spotify音乐的Android音频可视化应用程序。我使用的是Spotify的安卓流媒体sdk,它创建了一个本地服务(无需安装Spotify应用程序),并在应用程序中播放音乐。我很难让Androids Visualizer库从Spotify中提取任何音频(如果我使用本地.mp3文件,它可以很好地工作)。

//Start playing spotify track
player.playUri(MainActivity.operationCallback, 
VisualizerModel.getInstance().getTrackURI(), 0, 0);
.... other code ....
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
int audioSessionId = mediaPlayer.getAudioSessionId();
visualizer = new Visualizer(audioSessionId);
visualizer.setCaptureSize(audioSampleSize); 
visualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate(), true, true);

visualizer.setEnabled(true);

如果我运行这个,一切都会编译并运行正常,但可视化工具不会拾取任何音频。这让我觉得音频会话ID与Spotify播放的音频会话ID不同。然而,如果我将音频会话ID切换到0(它应该会听我所理解的混合的所有音频会话),它会崩溃,并出现以下错误:

E/AudioEffect: set(): AudioFlinger could not create effect, status: -1
E/visualizers-JNI: Visualizer initCheck failed -3
E/Visualizer-JAVA: Error code -3 when initializing Visualizer.

根据他们的文档,该错误意味着:由于对象初始化错误,操作失败。

我的目标是API 24(Android 7.0)。

如果您对使用Android的Visualizer库有任何建议或替代方案,请告诉我。我觉得我的主要问题是,我不知道如何找到Spotify正在播放的audioSessionId,而且由于Spotify的安卓流媒体sdk是测试版(在他们的网站上没有提到),我在Github上看到的几乎没有关于它的文档。

感谢您抽出时间阅读我的文章!

我也遇到了同样的错误。将"android.permission.RECORD_AUDIO"添加到清单并请求运行时权限修复了该问题。

为了保护某些音频数据(如语音邮件)的隐私,使用可视化工具需要获得android.permission.RECORD_audio 权限

还有

在输出混音(音频会话0)上创建可视化工具需要权限Manifest.permission.MODIFY_audio_SETTINGS

Visualizer类的Android文档

最新更新