首页 > 解决方案 > 在 Android 设备上播放来自 ASIO 设备的音频

问题描述

我从 ASIO 设备录制了一些声音,该设备存储为浮点数组。音频的样本类型似乎是“ASIOSTInt32LSB”。我正在尝试弄清楚如何在 Android 设备上播放此音频。

我已经尝试创建一个 AudioTrack 并将音频的字节数组从 ASIO 设备写入轨道,但我得到了可以在下面看到的错误。我尝试将浮点数组值标准化为 -1.0 到 1.0 的范围,但这没有效果。我也尝试使用 MediaPlayer 而不是 AudioTrack,并创建一个临时文件,该文件采用字节数组的值,但这也不起作用。

private void playSound(byte[] soundArray)
    {
        final int TEST_SR = 22050; //This is from an example I found online.
        final int TEST_CONF = AudioFormat.CHANNEL_OUT_MONO;
        final int TEST_FORMAT = AudioFormat.ENCODING_PCM_FLOAT;
        final int TEST_MODE = AudioTrack.MODE_STATIC;.
        final int TEST_STREAM_TYPE = AudioManager.STREAM_ALARM;
        AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT, soundArray.length, TEST_MODE);
        track.write(soundArray, 0, soundArray.length);
    }

我希望播放声音,但会产生以下错误:

2019-02-13 20:19:29.665 16618-16653/com.xx.yy E/AudioTrack: AudioFlinger could not create track, status: -12
2019-02-13 20:19:29.666 16618-16653/com.xx.yy E/AudioTrack-JNI: Error -12 initializing AudioTrack
2019-02-13 20:19:29.667 16618-16653/com.xx.yy E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.

标签: androidaudioasio

解决方案


推荐阅读