Я новичок в 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);
Но не повезло. Мне действительно нужна помощь.
Подробнее здесь:
https://stackoverflow.com/questions/434 ... morystream