繁体   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