2017-07-06 8 views
0

私はもう一度私のnoobの質問をしています。今度はcscoreを使ってWindowsサウンドを録音し、録音したバイトをソケットで別のPCに送信し、そこから再生させます。c#cscoreすぐにループバックキャプチャされたレコードを再生する方法

私はちょうどDataAvailableコールバックの下で得たバイトを再生する方法を見つけ出すことができませんでした...

私は、ファイルにもらってバイトを書き込み、働いていた、そのファイルを再生しようとしましたが、サウンドが正しく再生されていません予期せぬ音が聞こえているようです。ので、ここで

は私のコードです:

WasapiCapture capture = new WasapiLoopbackCapture(); 
capture.Initialize(); 
capture.DataAvailable += (s, e) => 
{ 
    WaveWriter w = new WaveWriter("file.mp3", capture.WaveFormat); 
    w.Write(e.Data, e.Offset, e.ByteCount); 
    w.Dispose(); 
    MemoryStream stream = new MemoryStream(File.ReadAllBytes("file.mp3")); 
    SoundPlayer player = new SoundPlayer(stream); 
    player.Play(); 
    stream.Dispose(); 
}; 
capture.Start(); 

任意のヘルプは高く評価されるだろう。 - ;. そのように音がどのように出てくるのか聞きたいのなら、結果を記録します。

注:私はちょうどレコードがファイルに音やオープン後でそれだけで完璧に動作しますが、私が書くと即座に再生する場合、それは予想外の音が聞かれる場合.....

答えて

0

はadapaterとしてSoundInSourceを使用してください。

var capture = new WasapiCapture(...) 
capture.Initialize(); //initialize always first!!!! 

var soundInSource = new SoundInSource(capture) 
    { FillWithZeros = true }; //set FillWithZeros to true, to prevent WasapiOut from stopping for the case WasapiCapture does not serve any data 

var soundOut = new WasapiOut(); 
soundOut.Initialize(soundInSource); 
soundOut.Play(); 
関連する問題