【发布时间】:2015-11-21 13:03:46
【问题描述】:
VisualizerView 通过链接处理文件,但它与 MediaRecorder 不同。 MediaRecorder getMaxAmplitude() 函数只返回最高值,但我需要为每个频率获取一个字节数组。有没有办法做到这一点?
【问题讨论】:
标签: android frequency mediarecorder visualizer
VisualizerView 通过链接处理文件,但它与 MediaRecorder 不同。 MediaRecorder getMaxAmplitude() 函数只返回最高值,但我需要为每个频率获取一个字节数组。有没有办法做到这一点?
【问题讨论】:
标签: android frequency mediarecorder visualizer
我终于找到了一个解决方案,而且做起来并不难。有一种方法可以实时捕获 fft 数据。这是我的例子,
recordingThread = new VisualizerAudioRecordingThread(fileName, new VisualizerAudioRecordingHandler() {
//pass file name where to store the recorded audio
@Override
public void onFftDataCapture(final byte[] bytes) {
onActivity.runOnUiThread(new Runnable() {
public void run() {
if (Dialog.mVisualizerView != null) {
Dialog.mVisualizerView.updateVisualizerFFT(bytes); //update VisualizerView with new audio portion
}
}
});
}
@Override
public void onRecordSuccess() {
}
@Override
public void onRecordingError() {}
@Override
public void onRecordSaveError() {}
});
recordingThread.start();
}
这里是完整的例子,我从哪里得到这些信息, https://github.com/steelkiwi/AndroidRecording
【讨论】:
VisualizerView 链接到 MediaPlayer,而不是 MediaRecorder。
您无法通过 MediaRecorder 实时访问 AudioEncoder 内部发生的事情,只能接收可能发生的任何错误...
也许如果您将音频保存到文件中然后对其进行处理可以解决您的问题?
http://developer.android.com/guide/topics/media/audio-capture.html
【讨论】: