C# 更改采样率并写入文件时,CSCore崩溃

C# 更改采样率并写入文件时,CSCore崩溃,c#,unity3d,mono,cscore,C#,Unity3d,Mono,Cscore,我正在尝试使用.net库将声音文件转换为另一个进程的特定格式。我在Unity中使用它,但我不认为这是问题的具体表现,因为它在其他方面工作得非常完美 我现在有这个代码: using (IWaveSource source = CodecFactory.Instance.GetCodec(audioPath)) { using (IWaveSource destination = source.ToSampleSource() .ChangeSampleRate(16000)

我正在尝试使用.net库将声音文件转换为另一个进程的特定格式。我在Unity中使用它,但我不认为这是问题的具体表现,因为它在其他方面工作得非常完美

我现在有这个代码:

using (IWaveSource source = CodecFactory.Instance.GetCodec(audioPath)) {
    using (IWaveSource destination = source.ToSampleSource()
        .ChangeSampleRate(16000)
        .ToMono()
        .ToWaveSource(16)) {

        audioPath = Application.dataPath + "/" + Path.GetFileNameWithoutExtension(audioPath) + "_temp_converted" + Path.GetExtension(audioPath);

        destination.WriteToFile(audioPath);
    }
}
似乎是更改采样率和写入文件的组合导致了崩溃。如果我删除.ChangeSampleRate行(或者用文件的当前采样率替换16000),那么它会很好地保存一个mono 16位.wav文件,如果我保留该行但不尝试将其写入文件,Unity不会崩溃

有没有其他人经历过这种情况,或者对造成这种情况的原因有什么见解?我开始用这个扯头发了


谢谢。

重采样器使用windows com对象。不确定这是否与团结一致有效。@thefiloe啊,我想可能就是这样。DLL的其他部分工作正常,但我意识到这并不意味着它的其余部分将。。。你知道在统一中实现这一点的其他方法吗?也许是别的图书馆?真的吗?你说的是DLL的哪些部分?我已经能够从Unity内部保存一个16位单声道版本的立体声wav文件-只是改变了导致崩溃的采样率。