SoundPlayer 在从 MemoryStream 读取数据时崩溃



我正在制作一个小应用程序,它从另一个应用程序接收数据并逐个部分播放它接收的声音。

这是我正在做的模拟:

var soundPlayer = new  SoundPlayer();
var buffer = new byte[2048];
using (var fileStream = File.OpenRead(filePath))
{
var iOffset = 0;
while (true)
{
try
{
iOffset = fileStream.Read(buffer, iOffset, buffer.Length);
if (iOffset == 0)
{
Console.WriteLine("Offset end.");
break;
}
var memoryStream = new MemoryStream(buffer, 0, buffer.Length);
soundPlayer.Stream = memoryStream;
//soundPlayer.Load();
soundPlayer.Play();
Thread.Sleep(TimeSpan.FromSeconds(10));
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
break;
}
}

它逐个部分地将文件读取到内存流(每 5 秒 2048 字节 - 连接延迟模拟)

应用程序崩溃,而不会在该方法后跳转到异常代码块soundPlayer.Play()

我做错了什么?

谁能帮我?

谢谢

我认为你不能以这种方式使用SoundPlayer。来自 SoundPlayer 类的文档:

配置为从流或 URL 加载.wav文件的 SoundPlayer 必须 在播放开始之前将.wav文件加载到内存中。

如果您希望能够以块的形式接收音频流,则需要使用另一个库。我可以推荐纳乌迪奥。另请参阅此 SO 帖子使用 C# 播放流中的音频。

最新更新