你好我有以下代码来播放原始文件。我的原始文件持续时间是25秒。这段代码工作正常,但过了一段时间我的程序播放原始文件非常慢,速度几乎达到50%,我的原始文件持续时间增加了36秒,当我重新启动我的电脑并运行我的程序时,它的工作正常。我需要每隔一小时重新启动我的电脑才能正常工作,请检查我的代码有什么问题,这是我的代码
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
答案 0 :(得分:1)
NAudio在您的代码示例中根本没有任何影响。您所做的只是从文件中读取数据,并将其发送到串行端口。 RawSourceWaveStream只是将WaveFormat附加到文件流中,但没有任何内容正在读取该流。无论您收听通过串口发送的音频数据的设备,都会有一种预期的音频格式。你需要找出它是什么。然后你可以使用NAudio将音频转换为正确的格式,如果它不是正确的采样率/通道数(这将是音频以50%的速度播放的两个最可能的原因)