gpt4 book ai didi

java - 将 wav 文件放入由帧集合组成的 ArrayList 中

转载 作者:行者123 更新时间:2023-12-02 05:38:29 25 4
gpt4 key购买 nike

我使用代码从 wav 文件创建一个缓冲区,在该缓冲区中以 100 帧为单位读取数据。

原始代码请参阅下面的链接:

http://www.labbookpages.co.uk/audio/javaWavFiles.html

我现在需要创建一个 ArrayList,其中每个元素由 wav 文件中的 100 帧组成(第一个元素 0-99,第二个元素 100-199 等...)

我无法弄清楚如何将其实现到我当前尝试过的代码中:

     // Display information about the wav file
wavFile.display();

// Get the number of audio channels in the wav file
int numChannels = wavFile.getNumChannels();

// Create a buffer of 100 frames
double[] buffer = new double[100 * numChannels];

int framesRead;


do
{
// Read frames into buffer
framesRead = wavFile.readFrames(buffer, 100);

}
while (framesRead != 0);

// Close the wavFile
wavFile.close();

我不确定应该以什么方式构建或填充数组列表。

任何有关我如何实现这一目标的建议将不胜感激。

最佳答案

我为框架创建了一个类,假设它们存储为 int 数组(可以轻松修改为 double 或您想要存储的任何其他类型)。这段代码的想法是创建一个 Frames 容器类,用于创建 ArrayList,这将使您以后可以轻松访问包含 100 个存储值的数组.

public class Frames {

private int[] frames;

public Frames() {
}

public Frames(int[] frames)
{
this.frames = frames;
}

public int[] getFrames() {
return frames;
}

public void setFrames(int[] frames) {
this.frames = frames;
}

}

这将在您的方法中使用,如下所示:

    ArrayList<Frames> list = new ArrayList<Frames>();
//This would be your 100 values stored as an array
int[] arr = {123,234,2342,1234124,12341};
Frames frames = new Frames(arr);

//Add the frames to the list(you will be doing this in a loop to continue adding them)
list.add(frames);

只需修改它即可添加从循环中获取的值。每次获取包含 100 个值的数组时,您都需要声明 new Frames(yourValues),然后将其添加到 ArrayList

关于java - 将 wav 文件放入由帧集合组成的 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56152047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com