首页 > 解决方案 > 从数组对象 vb.net 播放 wav 文件时,波头损坏错误

问题描述

我正在尝试构建一个显示数字的应用程序,例如 123 --> wav 声音中的“一、二、三”。我可以通过使用以下命令多次播放相同的 wav 文件而没有任何问题:

My.Computer.Audio.Play(My.Resources.xxx, AudioPlayMode.WaitToComplete)

但是当我将对象放入这样的数组中时

wav_files() As Object =
    {0,
    My.Resources.xxx,
    My.Resources.yyy,
    My.Resources.zzz,
    }

然后我尝试在数组中调用相同的索引两次:

My.Computer.Audio.Play(wav_files(2), AudioPlayMode.WaitToComplete)
My.Computer.Audio.Play(wav_files(2), AudioPlayMode.WaitToComplete)

并不断收到错误:

波头已损坏。

我需要将这些 wav 文件编入索引,以便我可以在我的转换函数 NUMBERS --> SOUND 上调用它们

我做对了吗?有没有其他想法,所以我的资源已经订购了索引文件。

标签: vb.netfileaudioresourcesplayback

解决方案


编辑:

好的,这是有效的:

Dim wavs As New List(Of Byte())

wavs.Add(System.IO.File.ReadAllBytes(<PATH_TO_YOUR_SOUND_FILE_1>))
wavs.Add(System.IO.File.ReadAllBytes(<PATH_TO_YOUR_SOUND_FILE_2>))
wavs.Add(System.IO.File.ReadAllBytes(<PATH_TO_YOUR_SOUND_FILE_3>))

My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)
My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)
My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)

或使用资源:

Using stream As System.IO.Stream = My.Resources.ResourceManager.GetStream(<STRING NAME OF RESOURCE WITHOUT EXTENSION>)
    Dim buffer(stream.Length) As Byte
    stream.Read(buffer, 0, stream.Length - 1)
    wavs.Add(buffer)
End Using

My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)
My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)
My.Computer.Audio.Play(wavs(0), AudioPlayMode.WaitToComplete)

推荐阅读