2013-07-04 5 views
0

NAudio를 사용하여 오디오 파일 .wav를 PC간에 정확하게 보내고 있습니다.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(); 
    } 

지금 내가 readread 메소드를 호출 한 다음 바이트 배열을 요구하는 경우 때문에 코드를 수신을 계속하는 경우에 문제가 발생하고
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); 
    } 

, 오프셋

수신 코드 및 길이. 그러나 배열에 대해 묻는 이유는 모든 데이터를 수신 한 후에 배열을 요구하는 이유입니다.

ReadFile 방법을 어떻게 진행해야하는지에 대한 조언.

UPDATE --- 내가 WaveFileWriter에 사용하기 위해 sendfile을 전달 받고는 NetworkStream이 결정되지 않았 음 길이를 발견하고 그래서는 Stream Does not Support Seek Operations 제공 디버깅하는 동안

. 그러나 그것의 프로토 타입은 어떤 스트림을 받아 들일 수 있기 때문에 그것이 왜이 오류를 제공하는지 이해가 안돼.

답변

1

WAV 파일 헤더에 전체 파일이 기록 될 때까지 알려지지 않은 길이 정보가 포함되어 있기 때문에 WaveStreamWriter를 NetworkStream과 함께 사용할 수 없습니다. 따라서 헤더는 마지막에 기록되며 검색 가능한 스트림이 필요합니다.

WAV 파일을 스트리밍하는 대신 PCM 오디오 (및 필요한 경우 먼저 형식 정보)를 보내고 다른 쪽 끝의 WAV 파일에 넣기 만하면됩니다.

+0

이제 정확하게 네트워크 스트림을 통해 .wav 파일을 보내지 않기 때문에 내 질문 제목이 약간 오도 된 것 같습니다. 대신 SendFile의 'StreamToSend'는 [this] (http://opensebj.blogspot.com/2009/02/introduction-to-using-naudio.html) 자습서에서 얻은 또 다른 스트림입니다. –

+0

이미 WAV 전화가있는 경우 NetworkStream을 통해 보내면됩니다. WaveFileWriter를 전혀 사용할 필요가 없습니다. –

+0

안녕하세요 @ MarkHeath WasapiLoopbackCapture로 캡처 한 네트워크를 통해 데이터를 보내는 방법에 대한 예제를 제공해 주시겠습니까? PCM 오디오를 보내려면 어떻게해야합니까? 감사! –

관련 문제