首页 > 解决方案 > 从 AudioRecord 读取数据时出现 ERROR_BAD_VALUE

问题描述

我是使用 AudioRecord 类的新手。

我正在尝试从我的 AudioRecord 对象中读取音频数据。

我将对象声明如下:

 val shortArraySize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)
    
    val record = AudioRecord(MediaRecorder.AudioSource.MIC, 8000,
    AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, shortArraySize)

然后,在我运行的 Couroutine 中:

 record.startRecording()
 val bufferSize = shortArraySize

val audioData:ShortArray = shortArrayOf()
val read = record.read(audioData,0,bufferSize)

when(read){
                    AudioRecord.ERROR_INVALID_OPERATION -> println("ERROR Reading data")
                    AudioRecord.ERROR_BAD_VALUE -> println("ERROR not valid data and indexes")
                    AudioRecord.ERROR_DEAD_OBJECT -> println("ERROR Object not valid, needs to be recreated")
                    AudioRecord.ERROR -> println("ERROR")
                    else -> for (num in audioData){
                        println("num $num")
                    }
                }

我只想看看数组中有哪些数字,但我一直收到错误:ERROR_BAD_VALUE,这意味着无效的数据和索引。

然后我打印最小缓冲区大小和数组的实际大小,其中值应该是:

println("buffer size: $bufferSize") 
println("Array size:${audioData.size}")

我得到:

640
0

我尝试了 AudioRecord 的不同配置,但我总是收到此错误。

有人知道我做错了什么吗?

提前致谢

标签: androidkotlinandroid-audiorecord

解决方案


推荐阅读