即时将原始音频字节从 NAudio 转换为 wav 字节
Posted
技术标签:
【中文标题】即时将原始音频字节从 NAudio 转换为 wav 字节【英文标题】:Converting Raw audio bytes from NAudio to wav bytes on the fly 【发布时间】:2021-01-11 15:26:43 【问题描述】:您好,我正在尝试使用 NAudio 打开扬声器的实时流,然后以 wav 格式播放它们。我正在使用以下代码
private void ProcessData(object sender, WaveInEventArgs e)
if (e.BytesRecorded > 0)
MemoryStream stream = new MemoryStream();
WaveFormat format = WaveFormat.CreateALawFormat(CaptureInstance.WaveFormat.SampleRate, CaptureInstance.WaveFormat.Channels);
using (WaveFileWriter writer = new WaveFileWriter(new IgnoreDisposeStream(stream), format))
//important i am writing the bytes on the fly to the wavefilewriter
writer.Write(e.Buffer, 0, e.BytesRecorded);
writer.Flush();
writer.Dispose();
//after dispose i assume the wave file chunk is ready to be read/send
using (var player = new WaveOutEvent())
using (var reader = new WaveFileReader(stream))
//to test the wav bytes i tried to play the bytes but it gives error
//Not a WAVE file - no RIFF header
player.Init(reader);
player.Play();
但它会引发错误“不是 wav 文件,RIFF 标头不存在”,我知道要从原始字节播放实时音频,NAudio 文档中已经显示了另一种方法,但请注意测试字节的可靠性,我正在播放字节并测试wavefilewriter。实际目的不是播放音频,而是在确认后将正确的 wav 字节发送到服务器进行处理,例如它开始播放,然后我将在流中使用 ByteArray。
【问题讨论】:
【参考方案1】:您需要将MemoryStream
重新定位到开头,以便使用WaveFileReader
阅读它。
【讨论】:
好的,我会试一试,如果它解决了问题,请告诉您以上是关于即时将原始音频字节从 NAudio 转换为 wav 字节的主要内容,如果未能解决你的问题,请参考以下文章