我正在制作一个小应用程序,它从另一个应用程序接收数据,并逐个部分地播放它接收到的声音。
这是我正在做的模拟:
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()方法之后,应用程序在没有跳到异常代码块的情况下崩溃。
我做错了什么?
有谁能帮帮我吗?
谢谢,
发布于 2018-03-21 21:23:16
我认为你不能那样使用SoundPlayer。从documentation of the SoundPlayer class
配置为从流或URL加载.wav文件的SoundPlayer必须在播放开始前将.wav文件加载到内存中。
如果您希望能够接收分块的音频流,则需要使用另一个库。我可以推荐NAudio。另请参阅这篇文章,发布Play audio from a stream using C#。
https://stackoverflow.com/questions/49388679
复制相似问题