使用NAudio通过网络发送.Wav文件
本文关键字:Wav 文件 网络 NAudio 使用 | 更新日期: 2023-09-27 18:20:57
我正在与NAudio合作,将音频文件.wav从一台电脑发送到另一台电脑。
我已经尝试通过网络流发送消息,但我无法检查消息是否发送正确,因为到目前为止,我在接收代码时遇到了问题。
这是发送代码。
public void StartConnection()
{
_connection = new TcpClient("localhost",1111);
_stream = _connection.GetStream();
SendFile(_stream,_waveStream);
}
public void SendFile(NetworkStream StreamToWrite,WaveStream StreamToSend)
{
WaveFileWriter write = new WaveFileWriter(StreamToWrite,StreamToSend.WaveFormat);
byte[] decoded = FromStreamToByte(StreamToSend);
write.Write(decoded,0,decoded.Length);
write.Flush();
}
这是接收代码
public void ListenConnection()
{
_listener = new TcpListener(IPAddress.Any,1111);
_listener.Start();
TcpClient receiver = _listener.AcceptTcpClient();
_stream = receiver.GetStream();
}
public void ReadFile(NetworkStream stream)
{
WaveFileReader read = new WaveFileReader(stream);
}
现在我在哪里继续接收代码时遇到了问题,因为如果我调用read
的read
方法,那么它会要求字节数组、偏移量和长度。但它为什么要求一个数组,我无法理解,毕竟它只是在接收数据。
关于如何进一步使用ReadFile
方法的任何建议。
更新---
在调试过程中,我发现传递给SendFile以在WaveFileWriter中使用的NetworkStream没有确定长度,因此它给出了Stream Does not Support Seek Operations
。然而,我不明白为什么它会给出这个错误,因为它的原型说它可以接受任何Stream。
不能将WaveFileWriter与NetworkStream一起使用,因为WAV文件头包含的长度信息在写入整个文件之前是未知的。所以头写在最后,需要一个可查找的流。
不需要流式传输WAV文件,只需发送PCM音频(如果需要,请先格式化信息),然后将其放入另一端的WAV文件中。