使用AudioTrack播放时,AudioRecord录制音频质量非常失真

时间:2017-05-09 12:58:36

标签: java android

嘿我正在尝试以下操作:在一个移动设备上录制音频(例如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();

我尝试了不同的缓冲区大小,不同的用法和内容类型,但仍然得到相同的失真结果。

我希望有人可以帮助解决这个问题

0 个答案:

没有答案