Java输出值随时间的变化

用户名

我有一个音频文件,正在将其转换为字节数组,但是您无法确定该字节值何时真正在歌曲中播放。因此,我尝试将其扩展到歌曲的整个长度。

因此,在播放歌曲时,它会输出字节值。这怎么可能?

到目前为止,这是我的代码:

public class Main {

private static final String FILENAME = "assets/pf.wav";
private static double[] endResult = null;

public static void convert() throws IOException{
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(FILENAME));

    int read;
    byte[] buff = new byte[1024];
    while ((read = in.read(buff)) > 0)
    {
        out.write(buff, 0, read);
    }
    out.flush();
    byte[] audioBytes = out.toByteArray();
    endResult = calculateFFT(audioBytes);
}

public static double[] calculateFFT(byte[] signal)
{           
    final int mNumberOfFFTPoints =1024;
    double mMaxFFTSample;
    double temp;
    Complex[] y;
    Complex[] complexSignal = new Complex[mNumberOfFFTPoints];
    double[] absSignal = new double[mNumberOfFFTPoints/2];

    for(int i = 0; i < mNumberOfFFTPoints; i++){
        temp = (double)((signal[2*i] & 0xFF) | (signal[2*i+1] << 8)) / 32768.0F;
        complexSignal[i] = new Complex(temp,0.0);
    }

    y = FFT.fft(complexSignal);

    mMaxFFTSample = 0.0;
    int mPeakPos = 0;
    for(int i = 0; i < (mNumberOfFFTPoints/2); i++)
    {
         absSignal[i] = Math.sqrt(Math.pow(y[i].re(), 2) + Math.pow(y[i].im(), 2));
         if(absSignal[i] > mMaxFFTSample)
         {
             mMaxFFTSample = absSignal[i];
             mPeakPos = i;
         } 
    }

    return absSignal;

}

public static void main(String[] args) throws UnsupportedAudioFileException, IOException     {
    File file = new File(FILENAME);
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
    AudioFormat format = audioInputStream.getFormat();
    long frames = audioInputStream.getFrameLength();
    final double durationInSeconds = (frames+0.0) / format.getFrameRate();  
    try {
        convert();
        for(int i = 0; i < endResult.length; i++) {
            System.out.println(endResult[i]);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


}

我如何endResult[i]随时间而不是立即打印出字节数组(的值

等离子电源

每当您打印出一个值时,请执行以下操作:

Thread.sleep(100);

在打印下一个值之前要等待100毫秒(0.1秒)。这当然是可调的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SAS计算值随时间变化的次数

来自分类Dev

Div随时间变化的随机值

来自分类Dev

人口随时间变化

来自分类Dev

随时间变化的数组

来自分类Dev

ggplot2:使用箭头显示随时间变化的值

来自分类Dev

在Java中创建图的数组(随时间变化)

来自分类Dev

DBpedia结果随时间变化

来自分类Dev

两行显示随时间变化的比例值(变量未设置时间格式)

来自分类Dev

绘制随时间变化的风速和风向

来自分类Dev

随时间变化/绝对数字

来自分类Dev

如何使svg颜色随时间变化

来自分类Dev

如何绘制随时间变化的图?

来自分类Dev

绘制随时间变化的频率分布(堆叠)

来自分类Dev

如何合并随时间变化的变量[R]

来自分类Dev

随时间变化的颤振设计

来自分类Dev

随时间变化的颤振设计

来自分类Dev

识别R中随时间变化的变量

来自分类Dev

Gmaps.js随时间变化的路线

来自分类Dev

如何产生随时间变化的频率波?

来自分类Dev

如何识别未随时间变化的条目?

来自分类Dev

跟踪员工随时间变化的合适表格?

来自分类Dev

R-在较小值范围内随时间变化的观测图频率

来自分类Dev

在SQL Server中查询随时间变化的值的最小和最大日期的查询

来自分类Dev

加速度计的零值或灵敏度会随时间变化吗?

来自分类Dev

R:添加带有斜率系数的列,以获取随时间变化的值

来自分类Dev

随时间增加或减少值

来自分类Dev

Elasticsearch-如何查询特定字段随时间变化的结果

来自分类Dev

Elm-生成随时间变化的随机数列表

来自分类Dev

好奇CKAsset的fileUrl是否会随时间变化?