有没有办法记录Android中的麦克风输入,同时它是实时播放/预览的过程?我尝试使用AudioRecord和AudioTrack来做到这一点,但问题是我的设备无法播放录制的音频文件.实际上,任何Android播放器应用程序都无法播放录制的音频文件.
另一方面,使用Media.Recorder进行录制可以生成一个可以由任何播放器应用程序播放的良好录制的音频文件.但问题是我在实时录制麦克风输入时无法进行预览/播放.
任何反馈都非常感谢!提前致谢!
第一次在这里如此抱歉任何屠宰格式.
所以我对DSP是全新的,所以我对傅里叶变换只有非常全面的了解.我正在尝试为Android SDK 9构建一个可视化应用程序,其中包括android.media.audiofx.Visualizer中的Visualizer类 http://developer.android.com/reference/android/media/audiofx/Visualizer.html
方法getFft()的javadoc,这是我使用的状态:
"返回当前正在播放的音频内容的频率捕获.捕获是一个8位幅度的FFT.请注意,FFT的大小是指定捕获大小的一半,但是频谱的两侧都返回,产生的字节数相等捕获大小."
首先,"光谱的双方"是什么意思?该输出与标准FFT有何不同?
这是字节数组的一些示例输出,getFft()给出了124点以保持简单,我抓住了前31个分档.以下是前31个箱子的大小:
{123, -2, -23, -3, 6, -16, 15, -10, -8, -12, 9, -9, 17, -6, -18, -22, -8, 4, -5, -2, 10, -3, -11, 3, -4, -11, -8, 15, 16, 11, -12, 12}
Run Code Online (Sandbox Code Playgroud)
任何帮助或解释将不胜感激!
编辑: 因此,在盯着一堆图表后,看起来我的问题的一部分是谷歌没有指定使用的是哪个单位.几乎所有其他测量都是以mHz进行的,假设FTT输出也是mHz是否公平?有没有一个地方可以看到Visualizer类的源代码,所以也许我可以弄清楚幕后真的到底是怎么回事?
我继续抓住了getFft()的所有输出
93, -2, -28, -16, -21, 19, 44, -16, 3, 16, -9, -4, 0, -2, 21, 16, -3, 1, 2, 4, -3, 5, 5, 10, 6, 4, -9, 7, -2, -1, 2, 11, -1, 5, -8, …Run Code Online (Sandbox Code Playgroud)