读取.pcm文件为double数组

时间:2014-08-02 17:29:21

标签: java android audio-recording pcm

我正在开发一个Android应用程序。我需要做的是读取每个录制的音频文件。音频文件已被录制并保存为.pcm文件。我使用此代码来读取.pcm文件。

public double[] readPCM() {
    double[] result = null;

    try {
        File file = new File(Environment.getExternalStorageDirectory().getPath() + "/recording.pcm");
        InputStream in = new FileInputStream(file);
        int bufferSize = (int) (file.length()/2);

        result = new double[bufferSize];

        DataInputStream is = new DataInputStream(in);

        for (int i = 0; i < bufferSize; i++) {
            result[i] = is.readShort() / 32768.0;
        }

    } catch (FileNotFoundException e) {
        Log.i("File not found", "" + e);
    } catch (IOException e) {
        e.printStackTrace();
    }

    return result;

}

我想知道这段代码是否正确,因为在这段代码中,bufferSize是fileLength / 2。这令我感到困惑。请向我解释一下。顺便说一下,它确实返回一个带有值的双数组。这段代码工作正常,但我想确保这完全正常。提前谢谢。

0 个答案:

没有答案