(java)声音可以存储在像这样的字节数组中吗?

时间:2018-02-26 19:55:54

标签: java arrays audio

所以我的目标是将声音文件的傅立叶变换中的 y值存储到字节数组中。

注意:我正在尝试避免导入javax

我通过简单地将声音文件的字节存储到字节数组中来实现这一点。但我不确定这是否是接近它的正确方法。

这是我的代码:

public static void main ( String[] args ) {

    try{
        File f = new File("C:/Users/Maxwell/Desktop/TestSoundFile.m4a");

        byte[] bytesFromFile = getBytes(f);
        System.out.println(Arrays.toString(bytesFromFile));
    }
    catch(Exception e) {
        System.out.println("Nope. Just nope.");
    }
}


public static byte[] getBytes(File f) throws FileNotFoundException, IOException {

    byte[] buffer = new byte[1024];
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    FileInputStream fis = new FileInputStream(f);

    int read;

    while((read = fis.read(buffer)) != -1) {
        os.write(buffer, 0, read);
    }
    fis.close();
    os.close();

    return os.toByteArray();

}

这里的主要功能是getBytes()功能。

我所做的只是将声音文件中的字节存储到数组中。

main()函数中,print语句打印大量的整数。它看起来对我来说,但我不完全确定它是否真的有用,或者这些值与声音无关。

在Java上处理声音时,我有点新手。

我实现了目标吗?

1 个答案:

答案 0 :(得分:1)

根据wikipedia,.m4a文件通常使用AACALAC格式编码,这种文件格式可以包含元数据。您拾取的字节无法直接转换为实际的音频数据,或者甚至可能会拾取与实际音频无关的元数据。

我不知道如何管理这种音频文件,但似乎你应该研究文件类型。我所知道的唯一一种音频格式可以按照您期望的方式存储音频.wav文件,如果您可以事先转换音频,那么您可以更轻松地进行实际编程。