我是kotlin和android应用程序的初学者。
我想连续录制语音,并通过套接字将语音数据传送到服务器。
我尝试了下面的代码,但服务器最终只接收 * AMR * 格式的数据。
val byteArrayOutputStream = ByteArrayOutputStream()
val descriptors = ParcelFileDescriptor.createPipe()
val parcelRead = ParcelFileDescriptor(descriptors[0])
val parcelWrite = ParcelFileDescriptor(descriptors[1])
val inputStream: InputStream = ParcelFileDescriptor.AutoCloseInputStream(parcelRead)
val recorder = MediaRecorder()
recorder.setAudioSource(MediaRecorder.AudioSource.MIC)
recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB)
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
recorder.setOutputFile(parcelWrite.fileDescriptor)
recorder.prepare()
recorder.start()
var read: Int
val data = ByteArray(16384)
while ((inputStream.read(data, 0, data.size).also { read = it } != -1)) {
byteArrayOutputStream.write(data, 0, read)
}
byteArrayOutputStream.flush()
如何使用byteArrayOutputStream发送 * WAV * 格式的音频数据?是否可以使用上面的代码将采样率修改为48000?
谢谢你。
1条答案
按热度按时间2exbekwf1#
MediaRecorder.OutputFormat中列出的可用格式包括:
1.奥格
1.三个_GPP
如果您坚持使用WAV格式,则可能必须使用mentioned here的音频数据对WAV文件进行编码。