嘿我正在尝试以下操作:在一个移动设备上录制音频(例如Android智能手机)使用多播将录制音频发送到N个移动设备并播放录制的音频。我可以录制,传输和播放音频。但是播放音频非常失真,我无法弄清楚配置错误的是AudioRecord
还是AudioTrack
。
我的刻录机配置如下:
public static int RECORDER_SAMPLERATE = 44100;
...
mRecorder = new AudioRecord.Builder()
.setAudioSource(MediaRecorder.AudioSource.MIC)
.setAudioFormat(
new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(RECORDER_SAMPLERATE)
.setChannelIndexMask(AudioFormat.CHANNEL_IN_DEFAULT)
.build())
.setBufferSizeInBytes(AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,
AudioFormat.CHANNEL_IN_DEFAULT, AudioFormat.ENCODING_PCM_16BIT) * 4)
.build();
我的音轨配置如下:
mTrack = new AudioTrack.Builder().setAudioAttributes(
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build())
.setAudioFormat(
new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(44100)
.setChannelMask(AudioFormat.CHANNEL_OUT_STEREO).build())
.setBufferSizeInBytes(AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT))
.build();
我尝试了不同的缓冲区大小,不同的用法和内容类型,但仍然得到相同的失真结果。
我希望有人可以帮助解决这个问题