您可以尝试将其流式传输到字节数组中(如 MSDN 的WAV 文件中的流式数据中所述)。
基本上,TitleContainer.OpenStream(@"soundfile.wav")
在你的LoadContent()
函数中使用来创建一个System.IO.Stream
对象。然后来一个BinaryReader
with new BinaryReader(wavStream)
。
阅读标题:
int chunkID = reader.ReadInt32();
int fileSize = reader.ReadInt32();
int riffType = reader.ReadInt32();
int fmtID = reader.ReadInt32();
int fmtSize = reader.ReadInt32();
int fmtCode = reader.ReadInt16();
int channels = reader.ReadInt16();
int sampleRate = reader.ReadInt32();
int fmtAvgBPS = reader.ReadInt32();
int fmtBlockAlign = reader.ReadInt16();
int bitDepth = reader.ReadInt16();
if (fmtSize == 18)
{
// Read any extra values
int fmtExtraSize = reader.ReadInt16();
reader.ReadBytes(fmtExtraSize);
}
int dataID = reader.ReadInt32();
int dataSize = reader.ReadInt32();
读取实际声音数据:
byteArray = reader.ReadBytes(dataSize);
然后是一大堆复杂的代码来设置DynamicSoundEffect
对象(在上面的链接中有详细说明)
然后你可以使用dynamicSound.Play()
anddynamicSound.Stop()
来播放和停止你的声音!
免责声明:我没有测试过这种播放声音的方法,但它来自 MSDN,所以它可能是准确的