C# Naudio StreamMixToDisk错误
我在键入wav文件名并让nAudio将其接受为StreamMixToDisk时遇到问题C# Naudio StreamMixToDisk错误,c#,vb.net,naudio,C#,Vb.net,Naudio,我在键入wav文件名并让nAudio将其接受为StreamMixToDisk时遇到问题 Public Sub SetupAudio() 'Setup the Mixer mixer = New WaveMixerStream32() mixer.AutoStop = False If waveOutDevice Is Nothing Then 'waveOutDevice = new AsioOut(); waveOutDevi
Public Sub SetupAudio()
'Setup the Mixer
mixer = New WaveMixerStream32()
mixer.AutoStop = False
If waveOutDevice Is Nothing Then
'waveOutDevice = new AsioOut();
waveOutDevice = New WaveOut(0, 300, False)
waveOutDevice.Init(mixer)
waveOutDevice.Play()
End If
End Sub
Private Sub cmbRecordDirect_Click(sender As Object, e As EventArgs) Handles cmbRecord.Click
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Title = "Select output file:"
saveFileDialog.Filter = "WAV Files (*.wav)|*.wav"
saveFileDialog.FileName = outputFilename
If saveFileDialog.ShowDialog() = DialogResult.OK Then
outputFilename = saveFileDialog.FileName
mixer.StreamMixToDisk(outputFilename)
mixer.StartStreamingToDisk()
cmbRecordDirect.Enabled = False
cmbStopDirect.Enabled = True
cmbPauseDirect.Enabled = True
End If
End Sub
outputFilename是c:\test.wav,但一旦它到达混音器.StreamMixToDisk(outputFilename)它就会出现一个错误,显示:
A first chance exception of type 'System.NullReferenceException'
Object reference not set to an instance of an object.
上面转换为VB.net的C#代码如下:
private void cmbRecordDirect_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "Select output file:";
saveFileDialog.Filter = "WAV Files (*.wav)|*.wav";
saveFileDialog.FileName = outputFilename;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
outputFilename = saveFileDialog.FileName;
mixer.StreamMixToDisk(outputFilename);
mixer.StartStreamingToDisk();
cmbRecordDirect.Enabled = false;
cmbStopDirect.Enabled = true;
cmbPauseDirect.Enabled = true;
}
}
发生此错误的原因是什么?我没有调用SetupAudio()来启动混音器的形式,似乎
混音器在任何地方都没有实例化,因此为空。如果mixer
本身不为null,则StreamMixToDisk
方法中的对象为空。
Public Sub SetupAudio()
'Setup the Mixer
mixer = New WaveMixerStream32()
mixer.AutoStop = False
If waveOutDevice Is Nothing Then
'waveOutDevice = new AsioOut();
waveOutDevice = New WaveOut(0, 300, False)
waveOutDevice.Init(mixer)
waveOutDevice.Play()
End If
End Sub
Private Sub cmbRecordDirect_Click(sender As Object, e As EventArgs) Handles cmbRecord.Click
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Title = "Select output file:"
saveFileDialog.Filter = "WAV Files (*.wav)|*.wav"
saveFileDialog.FileName = outputFilename
If saveFileDialog.ShowDialog() = DialogResult.OK Then
outputFilename = saveFileDialog.FileName
mixer.StreamMixToDisk(outputFilename)
mixer.StartStreamingToDisk()
cmbRecordDirect.Enabled = False
cmbStopDirect.Enabled = True
cmbPauseDirect.Enabled = True
End If
End Sub