簡體   English   中英

使用NAudio通過網絡發送.Wav文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM