java - 向后播放 WAV 文件

标签 java stream audio

我正在制作 Braid在 java 。如果你倒回时间,声音会倒退。 如何向后播放WAV文件?也许有类似 previous() 的流? 在 Braid 的网站上,你能明白我的意思吗?

更新:已解决!请参阅我自己的帖子。

最佳答案

我自己解决了

import java.io.IOException;
import javax.sound.sampled.AudioInputStream;

/**
 *
 * @author Martijn
 */
public class FrameBuffer {

    private byte[][] frames;
    private int frameSize;

    public FrameBuffer(AudioInputStream stream) throws IOException {
        readFrames(stream);
    }

    public byte[] getFrame(int i) {
        return frames[i];
    }

    public int numberFrames()
    {
        return frames.length;
    }

    public int frameSize()
    {
        return frameSize;
    }

    private void readFrames(AudioInputStream stream) throws IOException {
        frameSize = stream.getFormat().getFrameSize();
        frames = new byte[stream.available() / frameSize][frameSize];
        int i = 0;
        for (; i < frames.length; i++)
        {
            byte[] frame = new byte[frameSize];
            int numBytes = stream.read(frame, 0, frameSize);
            if (numBytes == -1)
            {
                break;
            }
            frames[i] = frame;
        }
        System.out.println("FrameSize = " + frameSize);
        System.out.println("Number frames = " + frames.length);
        System.out.println("Number frames read = " + i);
    }
}

然后:

 FrameBuffer frameStream = new FrameBuffer(austream); //austream is the audiostream
 int frame = frameStream.numberFrames() - 1;
 while (frame >= 0) {
      auline.write(frameStream.getFrame(frame), 0, frameStream.frameSize());
      frame--;
 }

关于java - 向后播放 WAV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267488/

相关文章:

java - 如何在不运行该系统的情况下获取方法的调用者(用 JAVA 编写)

java - 使用按位运算符检查 JAVA 中的梅森数

stream - h264 比特流类型

java - BufferedReader.readLine()不读取并挂起系统(等待)

scala - Stream 什么时候需要懒惰?

java - 无法播放音频剪辑

audio - 如何使用具有多个音频流的 mpv 播放视频

android - 使用 libjingle 在 android WebRTC 中自定义音频设备

java - 使用单个 for Loop 或使用 Any Collection 检查数组中所有数字的出现次数

java - 在我的 ArrayList 的 ArrayList 中,为什么对单个元素的所有操作都会影响所有其他索引?