【发布时间】:2020-06-26 14:08:15
【问题描述】:
我已经为此绞尽脑汁已经有一段时间了。我已经查看了所有内容,但在这里找不到任何问题的答案。我试图完成的是一个功能,它允许我选择麦克风的输入卡和输出卡去收音机。此代码在初次尝试时有效,但是一旦我停止“传输”,您就会听到听起来像是双倍音频流的声音,并且它变得迟钝并最终因缓冲区满异常而崩溃。我不确定我在这里做错了什么。
public WaveOutEvent outputDevice = new WaveOutEvent() { DeviceNumber = -1 };
public WaveInEvent inputDevice = new WaveInEvent() { DeviceNumber = -1 };
public bool transmit = false;
public bool markerActive = false;
public bool alert1Active = false;
public SerialPort port = new SerialPort();
public string[] ports = SerialPort.GetPortNames();
private BufferedWaveProvider bufferedWaveProvider;
public string keyTransmitter()
{
string label;
if (transmit)
{
transmit = false;
port.DtrEnable = false;
port.RtsEnable = false;
label = "Transmit";
bufferedWaveProvider.ClearBuffer();
inputDevice.StopRecording();
inputDevice.Dispose();
outputDevice.Dispose();
outputDevice.Stop();
}
else
{
transmit = true;
port.DtrEnable = true;
port.RtsEnable = true;
label = "Transmitting";
bufferedWaveProvider = new BufferedWaveProvider(inputDevice.WaveFormat);
inputDevice.DataAvailable += OnDataAvailable;
inputDevice.StartRecording();
outputDevice.Init(bufferedWaveProvider);
outputDevice.Play();
}
return label;
}
public void OnDataAvailable(object sender, WaveInEventArgs args)
{
bufferedWaveProvider.AddSamples(args.Buffer, 0, args.BytesRecorded);
//bufferedWaveProvider.DiscardOnBufferOverflow = true;
}
【问题讨论】:
标签: c# .net audio buffer naudio