vb.net - 使用 NAudio 暂停录音

标签 vb.net naudio

我正在使用 NAudio 和 Visual Basic 开发简单的录音机。我正在使用 .NET 4.0 和 Visual Studio 2013 Community。 是否可以暂停音频录制然后恢复录制?

这是我录制音频的代码:

Dim micWaveIn As IWaveIn
Dim micFileWriter As WaveFileWriter
Dim tempFolderPath As String = IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "recordings")

Private Sub cmdStartRecord_Click(sender As Object, e As EventArgs) Handles cmdStartRecord.Click
    Dim micDevice = DirectCast(cboInputDevice.SelectedItem, MMDevice)
    micDevice.AudioEndpointVolume.Mute = False
    micWaveIn = New WasapiCapture(micDevice)

    AddHandler micWaveIn.DataAvailable, AddressOf MIC_AudioDataAvailable
    AddHandler micWaveIn.RecordingStopped, AddressOf MIC_AudioStopRecording

    Dim filePath As String = IO.Path.Combine(tempFolderPath, "mic_record.wav")
    micFileWriter = New WaveFileWriter(filePath, micWaveIn.WaveFormat)

    micWaveIn.StartRecording()
End Sub

Private Sub cmdStopRecord_Click(sender As Object, e As EventArgs) Handles cmdStopRecord.Click
    If micWaveIn IsNot Nothing Then
        micWaveIn.StopRecording()

        RemoveHandler micWaveIn.DataAvailable, AddressOf MIC_AudioDataAvailable
        RemoveHandler micWaveIn.RecordingStopped, AddressOf MIC_AudioStopRecording

        micWaveIn.Dispose()
        micWaveIn = Nothing
    End If
    If micFileWriter IsNot Nothing Then
        micFileWriter.Dispose()
        micFileWriter = Nothing
    End If
End Sub

Private Sub MIC_AudioDataAvailable(sender As Object, e As WaveInEventArgs)
    If micFileWriter IsNot Nothing Then
        micFileWriter.Write(e.Buffer, 0, e.BytesRecorded)
    End If
End Sub

Private Sub MIC_AudioStopRecording(sender As Object, e As StoppedEventArgs)
    If e.Exception IsNot Nothing Then
        MsgBox("Error while recording.", vbExclamation, "Error.")
    End If
End Sub

我目前正在考虑这段代码:

Private Sub MIC_AudioDataAvailable(sender As Object, e As WaveInEventArgs)
    If micFileWriter IsNot Nothing Then
        If isRecording Then
            micFileWriter.Write(e.Buffer, 0, e.BytesRecorded)
        End If
    End If
End Sub

但是输出的音频无法在我的电脑上播放。有什么建议吗?

最佳答案

是的,您可以通过此代码暂停和恢复重新编码,我在 C# 中使用了此代码,但您可以将其转换为 VB

        void pauserecording()
        {
            if (ispaused == false)
            {
                _wavein.DataAvailable -= OndataAvailable;
                ispaused = true;
            }
        }
        void resumerecording()
        {
            if (ispaused == true)
            {
                _wavein.DataAvailable += OndataAvailable;
                ispaused = false;
            }
        }

关于vb.net - 使用 NAudio 暂停录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705652/

相关文章:

algorithm - 如何使用 NAudio 对语音段连接应用平滑?

c# - 在 vb.net 网站中设置 c# web api

sql-server - 无法打开登录请求的数据库 "DatabaseName"。登录失败。用户登录失败

c# - 将 collection.foreach 从 C# 转换为 VB.Net

vb.net - 音频计算机音频网络流失真

c# - 将 wav 文件存储在数组中

c# - 使用NAudio,ADTS AAC转WAV转码,怎么做?

c# - NAudio从流?播放音频

c# - 在 Web 浏览器控件中控制 Excel

vb.net - 在 VB2010 windows 窗体的开头播放 .wav/.mp3 文件?