MonoGame:从 MemoryStream 加载 SoundEffect

问题描述 投票:0回答:1

我想我会把所有的 .wav 文件放到一个文件中,然后加载它们。我不认为这会是个问题,但有些地方不对劲。

它从磁盘读取 .wav 文件,然后使用 BinaryWriter 将其写入如下文件:

using (var fs = File.Create("sounds"))
{
    using (var bw = new BinaryWriter(fs))
    {
        var data = File.ReadAllBytes("test.wav");
        bw.Write(data.Length);
        bw.Write(data);
    }
}

然后我尝试使用静态方法 SoundEffect.FromStream 加载它,如下所示:

using (MemoryStream ms = new MemoryStream())
{
    using (var fs = File.OpenRead("sounds"))
    {
        using (var br = new BinaryReader(fs))
        {
            var length = br.ReadInt32();
            var data = br.ReadBytes(length);
            ms.Write(data);
        }
    }

    var sound = SoundEffect.FromStream(ms);
}

然后我得到一个异常:“指定的流不是一个 wave 文件。”。 有人可以帮我解决这个问题或解释为什么我不能这样做吗?

c# audio stream load monogame
1个回答
0
投票

记得在阅读之前将Seek位置设置回流的开头,正如您已经评论的那样! :)

ms.Seek(0, SeekOrigin.Begin);

链接

© www.soinside.com 2019 - 2024. All rights reserved.