我正在尝试使用CSCore .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),那么它会保存单个16位.wav文件,如果我保留该行但不尝试将其写入文件,Unity不会崩溃。
有没有其他人经历过这个,或者对可能导致它的原因有任何见解?我开始用这个撕掉我的头发了!
感谢。