2014-02-17 2 views
0

안녕하세요. file.my 원시 파일 재생 시간은 25 초입니다. 이 코드는 정상적으로 작동하지만 때로는 내 프로그램이 원시 파일을 매우 느리게 재생하며, PC를 다시 시작하고 프로그램을 정상적으로 실행하면 원시 파일 길이가 36 초 증가합니다. 나는 여기에 내 코드NAudio 라이브러리를 사용하여 Raw 파일 재생

Try 
    Dim rawStream = File.OpenRead("C:\myFile.raw") 
    Dim waveFormat = New NAudio.Wave.WaveFormat(8000, 16, 1) 
    Dim rawSource = New RawSourceWaveStream(rawStream, waveFormat) 
    Dim audioBufferSize = 320 
    Dim offset As Integer = 0 
    Dim buffer As Byte() = New Byte(audioBufferSize - 1) {} 
    Dim buffer2 As Byte() = New Byte(320) {} 
    While (rawSource.Read(buffer2, offset, audioBufferSize) > 0) 
     msport.Write(buffer2, offset, audioBufferSize) 
     Thread.Sleep(20) 
    End While 
Catch ex As Exception 
    MsgBox(ex.ToString) 
End Try 

답변

1

NAudio 당신의 코드 샘플에 전혀 영향을하지 않습니다 내 코드에 어떤 문제가 있는지 확인하십시오 제대로 작동하려면 내 PC를 1 시간마다를 다시 시작해야합니다. 파일에서 데이터를 읽고 직렬 포트로 보내는 것뿐입니다. RawSourceWaveStream은 단순히 WaveFormat을 파일 스트림에 첨부하지만 그 스트림을 읽는 것은 없습니다. 직렬 포트를 통해 전송하는 오디오 데이터를 청취하고있는 장치는 오디오 포맷을 기대합니다. 그것이 무엇인지 알아 내야합니다. 그런 다음 NAudio를 사용하여 올바른 샘플 속도/채널 수 (50 % 속도로 오디오를 재생할 가능성이 가장 높은 두 가지 원인 일 수 있음)가 아닌 경우 오디오를 올바른 형식으로 변환 할 수 있습니다.