我正在使用NAudio將音頻文件.wav從一臺電腦發送到另一臺電腦。使用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
方法的任何建議。
UPDATE ---
調試過程中,我發現,這是傳遞給SENDFILE用於WaveFileWriter的NetworkStream尚未確定長度,所以它給人的Stream Does not Support Seek Operations
。不過,我不明白爲什麼它會給出這個錯誤,因爲它的原型說它可以接受任何流。
現在,我注意到我的問題標題有點誤導,因爲我不是完全通過網絡流發送.wav文件。相反,SendFile中的StreamToSend只是我在[This](http://opensebj.blogspot.com/2009/02/introduction-to-using-naudio.html)教程中獲得的另一個流。 –
如果你已經有了一個WAV,可以通過NetworkStream發送。根本不需要涉及WaveFileWriter。 –
Hi @MarkHeath您可以舉一個如何通過WasapiLoopbackCapture捕獲的網絡發送數據的例子嗎? 如何發送PCM音頻?謝謝! –