Пауза при записи с микрофона в классе nAudio - C#
Формулировка задачи:
Всем хорошего настроения и доброго утра. Господа, помогите, пожалуйста. Можно ли в классе nAudio организовать паузу во время записи с дальнейшим ее продолжением? Не могу сообразить.
//начали запись
private void StartRecording()
{
wi = new WaveIn();
wi.DeviceNumber = 0;
wi.DataAvailable += waveIn_DataAvailable;
wi.RecordingStopped += waveIn_RecordingStopped;
wi.WaveFormat = new WaveFormat(44100, 2);
writer = new WaveFileWriter("c:\\file1.wav", wi.WaveFormat);
wi.StartRecording();
}
//накопление данных
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e);
}
else
{
writer.WriteData(e.Buffer, 0, e.BytesRecorded);
}
}
//завершить запись
private void StopRecording()
{
if (wi != null)
{
wi.StopRecording();
}
}
//после окончания записи
private void waveIn_RecordingStopped(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
}
else
{
wi.Dispose();
wi = null;
writer.Close();
writer = null;
}
}Решение задачи: «Пауза при записи с микрофона в классе nAudio»
textual
Листинг программы
public static void Concatenate(string outputFile, IEnumerable<string> sourceFiles)
{
byte[] buffer = new byte[1024];
WaveFileWriter waveFileWriter = null;
try
{
foreach (string sourceFile in sourceFiles)
{
using (WaveFileReader reader = new WaveFileReader(sourceFile))
{
if (waveFileWriter == null)
{
// first time in create new Writer
waveFileWriter = new WaveFileWriter(outputFile, reader.WaveFormat);
}
else
{
if (!reader.WaveFormat.Equals(waveFileWriter.WaveFormat))
{
throw new InvalidOperationException("Can't concatenate WAV Files that don't share the same format");
}
}
int read;
while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
{
waveFileWriter.WriteData(buffer, 0, read);
}
}
}
}
finally
{
if (waveFileWriter != null)
{
waveFileWriter.Dispose();
}
}
}