您好,我有以下代码来播放原始文件。我的原始文件持续时间是 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
最佳答案
NAudio 在您的代码示例中根本没有任何影响。您所做的只是从文件中读取数据,并将其发送到串行端口。 RawSourceWaveStream 只是将 WaveFormat 附加到文件流,但没有任何内容读取该流。无论您使用何种设备来收听您通过串行端口发送的音频数据,都将具有它所期望的音频格式。你需要找出那是什么。然后您可以使用 NAudio 将音频转换为正确的格式,如果它尚未处于正确的采样率/ channel 数(这将是音频以 50% 的速度播放的两个最可能的原因)
关于audio - 使用 NAudio 库播放原始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821489/