admin管理员组文章数量:1401176
I have written C# code using NAudio
, and instead of writing to an actual WAVE file in the file system, I am able to write it to a MemoryStream
, which I use later to send to an API. So far, so good.
As my next step, I am trying to send chunks of audio to this API every 10 seconds. I managed to accomplish this by enqueuing my MemoryStream
to a ConcurrentQueue
and recreating both MemoryStream
and writer every 10 seconds.
The code works, but my approach isn't performant enough.
My writer OnDataAvailable(
) method is shown here:
void OnDataAvailable(object sender, WaveInEventArgs e)
{
if (InvokeRequired)
{
//Debug.WriteLine("Data Available");
BeginInvoke(new EventHandler<WaveInEventArgs>(OnDataAvailable), sender, e);
}
else
{
//Debug.WriteLine("Flushing Data Available");
writerMem.Write(e.Buffer, 0, e.BytesRecorded);
//writer.Write(e.Buffer, 0, e.BytesRecorded);
int secondsRecorded = (int)(writerMem.Length / writerMem.WaveFormat.AverageBytesPerSecond);
if (secondsRecorded >= 10)
{
memQ.Enqueue(memStream);
memStream = new MemoryStream();
writerMem = new WaveFileWriter(memStream, new WaveFormat(44100, 16, 1));
}
else
{
progressBar1.Value = secondsRecorded;
}
}
}
Is there any better approach to resetting the writer and the MemoryStream
where data is written to?
本文标签: cNAudio resetting WaveFileWriter at every 10sStack Overflow
版权声明:本文标题:c# - NAudio: resetting WaveFileWriter at every 10s - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744266160a2597957.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论