xamarin 录制高品质音频,放大并在Android中同时播放

9vw9lbht  于 2022-12-07  发布在  Android
关注(0)|答案(1)|浏览(193)

我是使用Xamarin和C#进行Android开发的新手。我正在尝试录制高质量的音频,放大它,然后立即播放。到目前为止,我能够使用“AudioRecord”和“AudioTrack”对象进行录制和播放,但在音频质量和放大方面没有运气。以下是代码...

private void RecordAndPlayback()
{
    int recordingSampleRate = AudioTrack.GetNativeOutputSampleRate(Stream.Music);
    recordingSampleRate = System.Math.Max(recordingSampleRate, instance.SelectedSamplingRate);
    bufferSize = AudioRecord.GetMinBufferSize(recordingSampleRate, ChannelIn.Stereo, Android.Media.Encoding.Pcm16bit);

    buffer = new byte[bufferSize];

    audioRecord = new AudioRecord(AudioSource.Mic, recordingSampleRate, ChannelIn.Stereo, Android.Media.Encoding.Pcm16bit, bufferSize);

    audioTrack = new AudioTrack(Stream.Music, recordingSampleRate, ChannelOut.Stereo, Android.Media.Encoding.Pcm16bit, bufferSize, AudioTrackMode.Stream);

    audioTrack.SetPlaybackRate(recordingSampleRate);

    audioRecord.StartRecording();
    audioTrack.Play();

    while (isListening)
    {
        audioRecord.Read(buffer, 0, buffer.Length);
        audioTrack.Write(buffer, 0, buffer.Length);
    }
}

有没有人能请指导我在这方面记录音频与更好的质量,并可能放大音频音量,而播放它回来?
提前感谢:)

lfapxunr

lfapxunr1#

首先,音频的质量只与设备的硬件、kbps和音频文件的编码格式(new AudioRecord中的sampleRateInHz)有关。
所以在创建AudioRecord类的时候可以尝试设置一个高的sampleRateInHz。另外,关于高质量音频的问题是一个复杂的问题,你可以尝试google一下音频的编码格式和比特率。
而我在网上找到的示例中的代码通常使用两个bufferSize,一个用于AudioRecord,另一个用于AudioTrack

相关问题