如何计算Android中的AudioRecord所用的时间?计算来自AudioRecord的经过时间
我想要做的是类似于:figure 5(Second graph)。为了进一步解释我自己,我正在实时录制声音,然后在特定时间内绘制出音调并计算缓冲数据。
如何计算Android中的AudioRecord所用的时间?计算来自AudioRecord的经过时间
我想要做的是类似于:figure 5(Second graph)。为了进一步解释我自己,我正在实时录制声音,然后在特定时间内绘制出音调并计算缓冲数据。
只要计算一下,你就知道你记录的数据的大小,你也应该知道采样率和通道数量。所以Michael发表的评论是正确的。
我跟随了Michael的评论,并在录制后成功计算了以秒为单位的音频长度。
int SAMPLE_RATE_IN_HZ = 44100;
int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; // Guaranteed to be supported by devices
int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; // Is guaranteed to work on all devices
File audioFile = yourRecordingLogicHere();
long audioLengthInSeconds = audioFile.length()/(2 * SAMPLE_RATE_IN_HZ);
我记录在单声道这就是为什么有一个*2
乘法少于迈克尔的评论。
如果你的应用程序知道它正在使用哪一个记录设置(采样率,通道数量......),那么计算原始PCM记录的长度应该是将记录的累积大小数据由音频帧大小乘以采样率(例如,对于44.1kHz 16位立体声PCM记录,为'dataSize /(2 * 2 * 44100)')。 – Michael 2013-03-05 15:16:23