Захват аудио входа в Java - массив байтов - PullRequest
1 голос
/ 16 декабря 2011

Я пытаюсь получить двойные / целочисленные значения амплитуды для аудиовхода:

AudioFormat format = new AudioFormat(8000.0f, 8, 1, true, true);

    TargetDataLine line = null;
    DataLine.Info info = new DataLine.Info(TargetDataLine.class,
            format); 
    if (!AudioSystem.isLineSupported(info)) {

    }

    try {
        line = (TargetDataLine) AudioSystem.getLine(info);
        line.open(format);
    } catch (LineUnavailableException ex) {
        // Handle the error ...
    }

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int numBytesRead;
    byte[] data = new byte[line.getBufferSize() / 5];


    line.start();

    while (true) {

        numBytesRead = line.read(data, 0, data.length);
        // Save this chunk of data.
        out.write(data, 0, numBytesRead);
        for(int i=0; i<numBytesRead; i+=1) {
            System.out.println(Byte.toString(data[i]));

        }
        System.out.println();
    }

Я не могу понять, почему байтовый массив содержит только значения 0, -1 или 1. Как получить двойной илицелочисленные значения амплитуды.

1 Ответ

0 голосов
/ 05 января 2012

Решение состоит в том, чтобы сделать устройство микрофона более чувствительным. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...