[英]Sending .Wav file over the network using NAudio
我正在与NAudio一起从一台PC发送音频文件.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文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.