Играйте файл WAV назад

Другая опция к тестам записи на функции, которыми Вы интересуетесь. Установка тестовой обвязки является хорошим способом установить, какие зависимости система имеет и где ее состояние находится. Каждый тест запускается с утверждения о способе, которым Вы думаете, что система должна работать. Если это, оказывается, прокладывает себе путь, Вы достигли чего-то, и у Вас есть некоторый рабочий пример кода для репродуцирования его. Если это не прокладывает себе путь, у Вас есть загадка для решения и строка запроса для следования.

23
задан Peter Mortensen 10 February 2011 в 19:55
поделиться

3 ответа

YEEEEEEESSSSS !!!!!!!!

Решил сам (14 лет !!)
Я написал этот класс:

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--;
 }
15
ответ дан 29 November 2019 в 03:00
поделиться

Если WAV содержит PCM, измените порядок выборок PCM в обратном порядке. Если он содержит какой-либо другой формат, он может быть намного сложнее; вероятно, проще всего сначала преобразовать его в PCM.

Для получения дополнительной информации о формате WAV см. этот сайт .

2
ответ дан 29 November 2019 в 03:00
поделиться

Использовать Windows Sound Recorder (в Пуск -> Программы -> Стандартные -> Развлечения).

Он имеет функцию (Эффекты (меню) -> Реверс) для реверсирования файла .WAV. Вы можете сохранить измененный файл под другим именем, а затем открыть соответствующий в своей программе.

2
ответ дан 29 November 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: