我有一个.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();
我认为问题在于您使用缓冲区初始化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()
的调用,看看它是否有效。