将原始字节数据转换为音频

时间:2014-07-20 05:24:39

标签: java android

在我的应用程序中,我想将原始字节数据更改为音频。所以,首先我收到数据并将其添加到字节数组列表,而不是我想将整个数组列表更改为音频。由于数据是通过音频插孔生成的,如果您让我知道哪种音频格式合适(wav,3gp等),我将不胜感激?另外,我在将这些数据保存到文件中时遇到问题。这是我的代码。在fileOuputStream.write(audiod.toArray())的行中,它给出了一个错误,并要求我将audiod的类型更改为byte。

private static ArrayList<Byte> audiod = new ArrayList<Byte>();
audioFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myaudio.wav";

if (dg == 1) {
    //audiod.append(data[i]);
    for (int i = 0; data != null && i < data.length; i++) {
        audiod.add(data[i]);
    }
    if (stt.equalsIgnoreCase(("r"))) {
        dg = 0;
        recordButton.setEnabled(true);
        File file = new File(audioFilePath);
        try {
            FileOutputStream fileOuputStream = new FileOutputStream(audioFilePath);
            fileOuputStream.write( audiod.toArray());
            fileOuputStream.close();
            System.out.println("Done");
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

audiod.toArray()会为您提供Byte[],但您需要byte[]。在Java中,存在用于原始数据类型的所谓包装类。 Byte是一个包含byte值的对象。

为什么要使用Byte列表?它需要比你似乎无处可见的简单byte[]更多的内存(data)。

数据格式(wav,3gp等)取决于您获取数据的方式。