vb.net - 从数组对象 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 上调用它们
我做对了吗?有没有其他想法,所以我的资源已经订购了索引文件。
解决方案
编辑:
好的,这是有效的:
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)
推荐阅读
- c++ - 制作一个 QPushButton 圆形 C++
- ios - 如何初始化所有视图控制器?
- python - TypeError:标签不是 numpy 数组,也不是标量
- angular - 重定向到路由后,它立即转到上一页
- xmpp - 无法使用 IP 地址访问 ejabberd 管理面板
- javascript - 从 dist 加载 index.html 中的资源失败,这与工作 npm run dev cmd 相反
- ruby - The recipient does not receive any push message even though
- thymeleaf - How to stop character encoding in thymeleaf from changing url get parameter '?' character to changing to %3F
- ios - 如何在 Swift 中按日期对数组进行分组?
- json - How to flatten TimeStampSpec Column in json for druid?