Маршрутизация звука между Android и ПК создает белый шум

Я пытаюсь отправить звук между окнами и Android, мне удалось сделать это из окон в окна, но когда я передаю звук с Android, он воспроизводит только белый шум. Я думаю, что это проблема с AudioFormat в Android и Windows, потому что, когда я изменил биты образца на 8, я думаю, я услышал голос в одной стороне моих наушников, но затем он тоже исчез.

На стороне Android

        int BUFFER_MS = 15; // do not buffer more than BUFFER_MS milliseconds
        int bufferSize = 48000 * 2 * BUFFER_MS / 1000;
        AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 48000, 2,
                AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);


        byte[] buffer = new byte[bufferSize];
        int bytesRead;
        audioTrack.play();
        while (socket.isConnected()) {
            bytesRead = inputStream.read(buffer, 0, buffer.length);
            audioTrack.write(buffer,0,bytesRead);
        }

На стороне Windows

        AudioFormat format = getAudioFormat();
        DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);

        // checks if system supports the data line
        if (!AudioSystem.isLineSupported(info)) {
            throw new LineUnavailableException(
                    "The system does not support the specified format.");
        }
        TargetDataLine audioLine = AudioSystem.getTargetDataLine(format);

        audioLine.open(format);
        audioLine.start();

        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead;

        while (socket.isConnected()) {
            bytesRead = audioLine.read(buffer, 0, buffer.length);
            outputStream.write(buffer,0,bytesRead);
        }

и функция getAudioFormat

AudioFormat getAudioFormat() {
    float sampleRate = 48000;
    int sampleSizeInBits = 16;
    int channels = 2;
    boolean signed = true;
    boolean bigEndian = true;
    return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed,
            bigEndian);
}

Только слышу белый шум, если кто-то может помочь, пожалуйста.


person Awais    schedule 28.01.2021    source источник


Ответы (1)


Okayyyy Итак, я обнаружил проблему. Мне просто нужно было поставить bigEndian на false -_-

Это разница в порядке байтов. Я не понимаю, почему это отличается на Android и ПК, но, похоже, это помогает.

person Awais    schedule 29.01.2021