我是 CsCore 的新手。需要一些帮助。我想构建一个录音机,它能够将麦克风和扬声器录制到文件和外部录音机设备中。我已成功完成录制到文件。现在我想要再次做同样的事情,但在某个音频扬声器设备上播放。我考虑通过管道传输到流中并使用该流作为 WasapiOut 的源。但是,我无法将此流连接到 IWaveSource。
private Stream _strm;
private WaveWriter _waveWriterFile;
private WaveWriter _wavewriterStream;
private WasapiOut _externalRecorder;
_strm = new MemoryStream();
_wavewriterStream = new WaveWriter(_strm, _SpkCapture.WaveFormat);
IWaveSource ws = new WaveFileReader(_strm);
_externalRecorder.Initialize(ws);
_externalRecorder.Play();
// on Event I do following:
_waveWriterFile.Write(e.Data, e.Offset, e.ByteCount);
_wavewriterStream.Write(e.Data, e.Offset, e.ByteCount);
一切正常,直到我调用“new WaveFileReader(_strm);”。我收到一个异常(由我翻译)“无法读取超出流末尾的内容”。该流包含此时的数据。在尝试获取流之前先休眠 100 毫秒。我也尝试过
IWaveSource ws = new CSCore.MediaFoundation.MediaFoundationDecoder(strm);
但运气不好。我真的需要帮助。
将流 Position 属性设置为零。