CSCore - 从 MemoryStream 播放音频

问题描述 投票:0回答:1

我是 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); 

但运气不好。我真的需要帮助。

memorystream wasapi cscore
1个回答
0
投票

将流 Position 属性设置为零。

© www.soinside.com 2019 - 2024. All rights reserved.