Android Visualizer不会从Spotify流音乐中拾取音频

问题描述 投票:1回答:1

我正在制作一个用于播放Spotify音乐的Android音频可视化器应用。我正在使用Spotify的android-streaming-sdk创建一个本地服务(无需安装Spotify应用),并且可以从该应用中播放音乐。我很难让Android的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);

如果我运行此命令,则所有内容都可以编译并运行,但是可视化器不会拾取任何音频。这让我觉得音频sessionId与Spotify正在播放的音频不同。但是,如果我将audioSessionId切换为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的android-streaming-sdk处于Beta测试阶段(且未在其网站上提及),因此实际上没有任何文档从我在Github上看到的。

感谢您抽出宝贵时间阅读我的问题!

android android-mediaplayer spotify sessionid visualizer
1个回答
0
投票

我面临着同样的错误。添加“ android.permission.RECORD_AUDIO”作为清单并请求运行时权限可解决此问题。

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

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

Android docs for Visualizer class

© www.soinside.com 2019 - 2024. All rights reserved.