c#cscore如何即时播放回送捕获记录的字节

c#cscore如何即时播放回送捕获记录的字节,c#,playback,cscore,C#,Playback,Cscore,伙计们,又是我的问题。所以这次我用cscore来录制windows声音,然后通过套接字将录制的字节发送到另一台pc,让它们在那里播放 我只是不知道如何在DataAvailable回调下播放获取的字节 我试着将得到的字节写入一个文件并播放该文件,但声音播放不正确,好像也听到了一些意想不到的声音 这是我的代码: WasapiCapture capture = new WasapiLoopbackCapture(); capture.Initialize(); capture.DataAvailabl

伙计们,又是我的问题。所以这次我用cscore来录制windows声音,然后通过套接字将录制的字节发送到另一台pc,让它们在那里播放

我只是不知道如何在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();
任何帮助都将不胜感激;。 如果你想知道声音是如何通过这种方式发出的,我会把结果记录下来


注意:如果我只是将声音录制到一个文件中,然后再打开它,它就可以正常工作,但是如果我立即编写并播放,会听到意想不到的声音….

请使用
声音资源作为适配器

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();