[英]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.