我有一个 PCM 流,我想用 Android 的“Visualizer”进行可视化,但不会大声播放。
因此我实现了android-visualizer。
可视化成功,如果我使用
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT,
fileContent.length, AudioTrack.MODE_STREAM);
audioTrack.play();
mVisualizerView.link(audioTrack);
..
audioTrack.write(fileContent, 0, bytes);
但现在我的问题是,我不想真正“播放”我的 PCM,我只想将其可视化。我的用户可能正在用他们的媒体播放器听音乐,我不想打扰他们。
所以我想‘好吧,我可以让我的 AudioTrack 静音’:
audioTrack.setStereoVolume(0.0f, 0.0f);
但遗憾的是也没有更多的可视化。我认为由于SCALING_MODE_NORMALIZED,Visializer 应该忽略 AudioTrack 的响度:
定义一种捕获模式,其中根据捕获数据的内容应用放大。这是默认的 Visualizer 模式,适用于音乐可视化。
我尝试的下一个不是将 PCM 写入音轨,而是直接将其提供给抽屉:
mVisualizerView.updateVisualizer(fileContent);
这会产生一条曲线,但它看起来真的很疯狂,与我的预期无关(可能是因为我提供的是立体声而不是单声道?)。
我在创建 PCM 流的“波形”或“fft”数据方面也没有成功——我只是对我来说是新手。
有人有想法吗?