我是使用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);
}
}
有没有人能请指导我在这方面记录音频与更好的质量,并可能放大音频音量,而播放它回来?
提前感谢:)
1条答案
按热度按时间lfapxunr1#
首先,音频的质量只与设备的硬件、kbps和音频文件的编码格式(
new AudioRecord
中的sampleRateInHz)有关。所以在创建
AudioRecord
类的时候可以尝试设置一个高的sampleRateInHz。另外,关于高质量音频的问题是一个复杂的问题,你可以尝试google一下音频的编码格式和比特率。而我在网上找到的示例中的代码通常使用两个bufferSize,一个用于
AudioRecord
,另一个用于AudioTrack
。