android - 从 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 的不同配置,但我总是收到此错误。
有人知道我做错了什么吗?
提前致谢
解决方案
推荐阅读
- python - TypedDict 的 Python typehint 子集(部分)
- stored-procedures - 调用存储过程抛出错误时如何使任务失败
- python - 如何正确导入测试类以继承,而不将其作为测试运行
- python-3.x - Python - 识别一年内连续购买次数的最有效方法
- python - 在 Python 3.9 中使用目录路径接受用户输入时出现 os.chdir(src_path) 错误
- c++ - 使用共享内存在 C++ 和 python 之间进行快速通信
- python - 如何让 YoloV5 通过屏幕抓取进行检测?
- python - 如何在侧 docker 容器中访问 LAN 网络
- python - 为什么我不能在 Tkinter 的网格中间放置标签?
- python - vlc 视频上的透明小部件问题