Android Visualizer FFT/波形受设备音量影响吗?

发布于 2024-12-14 09:21:13 字数 650 浏览 2 评论 0原文

我正在使用 Android 2.3.1 上的 Visualizer 类进行一些音乐分析。我发现 FFT 和波形幅度受设备体积的影响。这意味着如果用户调低音量,我会收到很少或根本没有 FFT 数据。

我已经在 Motorola Xoom、Samsung Galaxy Tab 和模拟器上对此进行了测试,它的行为方式是这样的。

我正在使用下面的代码:

mp = new MediaPlayer();
mp.setDataSource("/sdcard/sine1.wav");
mp.prepare();
mp.setLooping(true);
mp.start();
int audioSessionID = mp.getAudioSessionId();
v = new Visualizer(audioSessionID);
v.setEnabled(true);

查看 Visualizer 类 的文档似乎如果我们传入有效的音频会话 ID,那么可视化工具应该对此音频会话进行操作。看起来展示台正在对输出混合进行操作。

还有其他人遇到过这个问题或找到解决方法吗?

谢谢

I'm working on some music analysis using the Visualizer class on Android 2.3.1. I am finding that the FFT and waveform magnitudes are affected by the volume of the device. This means that if the user has the volume turned down I receive little or not FFT data.

I've tested this on a Motorola Xoom, Samsung Galaxy Tab and the emulator and it behaves this way.

I am using the code below:

mp = new MediaPlayer();
mp.setDataSource("/sdcard/sine1.wav");
mp.prepare();
mp.setLooping(true);
mp.start();
int audioSessionID = mp.getAudioSessionId();
v = new Visualizer(audioSessionID);
v.setEnabled(true);

Looking at the docs for the Visualizer class it seems that if we are passing in a valid audio session id then the visualizer should operate upon this audio session. It appears that the Visualizer is operating upon the output mix.

Has anyone else encountered this or found a way around it?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寒江雪… 2024-12-21 09:21:13

我也面临着同样的问题,但是当我为相同的session id启用均衡器和可视化器时它正在工作。我不知道它的原因,我检查了它从api演示中的可视化器类中删除了均衡器它正在​​像你一样工作说。

 Equalizer mEqualizer = new Equalizer(0, SessionId);
 mEqualizer.setEnabled(true); // need to enable equalizer
 Visualizer mVisualizer = new Visualizer(SessionId);

I was also facing the same problem, but it is working when i am enabled the Eqaulizer and Visualizer for same seession id.I dont know the reason for it ,i checked it remove the equalizer from visualizer class in api demos it is working as you said.

 Equalizer mEqualizer = new Equalizer(0, SessionId);
 mEqualizer.setEnabled(true); // need to enable equalizer
 Visualizer mVisualizer = new Visualizer(SessionId);
街道布景 2024-12-21 09:21:13

可视化工具缩放模式有两个选项:

SCALING_MODE_AS_PLAYED 和 SCALING_MODE_NORMALIZED

如果您希望可视化工具标准化(无论音量大小它都是一致的),则使用 SCALING_MODE_NORMALIZED。

mVisualizer.scalingMode = Visualizer.SCALING_MODE_AS_PLAYED

请记住,这会极大地改变发送到可视化工具的值,因此可能需要进行其他调整。

There are two options for the Visualizer scaling mode:

SCALING_MODE_AS_PLAYED and SCALING_MODE_NORMALIZED

If you want the Visualizer to be normalized, as in it's consistent no matter what the volume is, then use SCALING_MODE_NORMALIZED.

mVisualizer.scalingMode = Visualizer.SCALING_MODE_AS_PLAYED

Keep in mind though that this drastically changes the values being sent to the Visualizer, so other adjustments may be needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文