2016-05-07 13 views
0
Imports NAudio 
Imports System.IO 
Imports NAudio.Utils 

Public Class Form1 
    Private waveSource As Wave.WaveIn = Nothing 
    Private waveFile As Wave.WaveFileWriter = Nothing 
    Private waveFileWriter As Wave.WaveFileWriter 
    Dim ms As MemoryStream 

    Private Sub waveSource_DataAvailable(ByVal sender As Object, ByVal e As Wave.WaveInEventArgs) 
     waveFileWriter.Write(e.Buffer, 0, e.BytesRecorded) 
     waveFileWriter.Flush() 
    End Sub 

    Private Sub waveSource_RecordingStopped(ByVal sender As Object, ByVal e As Wave.StoppedEventArgs) 
     Dim fs As FileStream = File.Create(Environment.CurrentDirectory & "\test.wav") 
     ms.Seek(0, SeekOrigin.Begin) 
     ms.CopyTo(fs) 
    End Sub 

    Private Sub startBTN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startBTN.Click 
     ms = New MemoryStream() 

     waveFileWriter = New Wave.WaveFileWriter(New IgnoreDisposeStream(ms), waveSource.WaveFormat) 
     waveSource.StartRecording() 
    End Sub 

    Private Sub stopBTN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopBTN.Click 
     waveSource.StopRecording() 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     waveSource = New Wave.WaveIn 

     AddHandler waveSource.DataAvailable, AddressOf waveSource_DataAvailable 
     AddHandler waveSource.RecordingStopped, AddressOf waveSource_RecordingStopped 
    End Sub 
End Class 

コードを次のポストから翻訳すると、「Bad Device ID」例外がスローされます。スピーカーからオーディオを録音するにはどうすればよいですか?

Naudio Recording and playing audio

私は、任意の記録装置(またはWaveIn)を持っていません。それはなぜですか?

答えて

1

はい。 NAudioはopensourceです。あなたはそれをデバッグし、これをあなた自身で発見することができます。

WASAPIキャプチャを調査します。それがうまくいくかどうかはわかりませんが、それは次のステップです。 Wave.WasapiLoopbackCaptureWave.WaveInを変更

1

C# how to record general audio from output device (speaker) with NAudio API

Private waveSource As Wave.WasapiLoopbackCapture = Nothing 

私の問題を解決しました。もちろん、私のコードにはまだ問題があります(注意してください)。打撃停止はキャプチャを停止しますが、ファイルは書き込まれません。強制的に終了するまでは、アプリケーションは.wavをディスクに保存しません。私はそれを私自身で理解することができます。

+0

ファイルを開いて閉じていないのが見えます... – zeromus

関連する問題