2014-02-17 101 views
0

您好,我有以下代碼播放原始文件。我的原始文件持續時間爲25秒。此代碼工作正常,但在某些時候,我的程序播放原始文件非常慢幾乎50%的速度和我原始文件的持續時間增加36秒,當我重新啓動我的電腦,並運行我的程序,它的工作正常再次。我需要重新啓動我的電腦每隔一小時才能正常工作,請檢查什麼是錯我的代碼這裏是我的代碼使用NAudio庫播放原始文件

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

n音訊是不是有你的代碼樣本中的所有任何影響。你所做的只是從文件中讀取數據,並將其發送到串行端口。 RawSourceWaveStream只是將WaveFormat附加到文件流中,但沒有任何內容正在讀取該流。無論您通過串口發送的音頻數據是通過哪種設備收聽的,都會有其預期的音頻格式。你需要找出那是什麼。然後,您可以使用NAudio將音頻轉換爲正確的格式,前提是它尚未處於正確的採樣率/通道計數(這可能是音頻以50%速度播放的兩個最有可能的原因)