gpt4 book ai didi

c# - 如何在 Stream 中连接 2 个 wave 文件?

转载 作者:行者123 更新时间:2023-11-30 21:52:58 25 4
gpt4 key购买 nike

<分区>

我在这方面工作 answer对于我的问题。我想把从数据库中得到的字节数组类型的2个wave文件拼接起来播放然后处理掉!

这是我的代码:

 public static void Play()
{
List<byte[]> audio = dal.SelectSound("خدمات", "احیاء");

byte[] sound = new byte[audio[0].Length + audio[1].Length];

Stream outputSound = Concatenate(sound, audio);

try
{
WaveFileReader wavFileReader = new WaveFileReader(outputSound);
var waveOut = new WaveOut(); // or WaveOutEvent()
waveOut.Init(wavFileReader);
waveOut.Play();
}
catch (Exception ex)
{
Logs.ErrorLogEntry(ex);
}
}

public static Stream Concatenate(byte[] outputFile, List<byte[]> sourceFiles)
{
byte[] buffer = new byte[1024];

Stream streamWriter = new MemoryStream(outputFile);

try
{
foreach (byte[] sourceFile in sourceFiles)
{
Stream streamReader = new MemoryStream(sourceFile);

using (WaveFileReader reader = new WaveFileReader(streamReader))
{
int read;
while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
{
streamWriter.Write(buffer, 0, read);
}
}
}
}

return streamWriter;
}

但是我得到这个错误:

Not a WAVE file - no RIFF header

执行此行后:

WaveFileReader wavFileReader = new WaveFileReader(outputSound);

提前致谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com