0

我有一个 .wav 文件,我将此字节形式写入 XML。我想在我的表格上播放这首歌,但我不确定我是否正确并且它不起作用。Str 是我文件的字节形式。

byte[] soundBytes = Convert.FromBase64String(str);
MemoryStream ms = new MemoryStream(soundBytes, 0, soundBytes.Length);
ms.Write(soundBytes, 0, soundBytes.Length);
SoundPlayer ses = new SoundPlayer(ms);
ses.Play();
4

1 回答 1

1

我认为问题在于您正在MemoryStream使用缓冲区进行初始化,然后将相同的缓冲区写入流。因此,流从给定的数据缓冲区开始,然后您使用相同的缓冲区覆盖它,但在此过程中,您还将流中的当前位置更改到最后。

byte[] soundBytes = Convert.FromBase64String(str);
MemoryStream ms = new MemoryStream(soundBytes, 0, soundBytes.Length);
// ms.Position is 0, the beginning of the stream
ms.Write(soundBytes, 0, soundBytes.Length);
// ms.Position is soundBytes.Length, the end of the stream
SoundPlayer ses = new SoundPlayer(ms);
// ses tries to play from a stream with no more bytes to consume
ses.Play();

删除对的调用ms.Write(),看看它是否有效。

于 2012-08-01T02:51:27.233 回答