C# 更改采样率并写入文件时,CSCore崩溃
我正在尝试使用.net库将声音文件转换为另一个进程的特定格式。我在Unity中使用它,但我不认为这是问题的具体表现,因为它在其他方面工作得非常完美 我现在有这个代码: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)
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文件-只是改变了导致崩溃的采样率。