基于这个问题我做的: 如何记录并使用AsioOut n音讯播放
有了这个代码:
[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]
private static unsafe extern void MoveMemory(IntPtr dest, IntPtr src, int size);
private void OnAudioAvailable(object sender, AsioAudioAvailableEventArgs e)
{
for (int i = 0; i < e.InputBuffers.Length; i++)
{
MoveMemory(e.OutputBuffers[i], e.InputBuffers[i], e.SamplesPerBuffer * e.InputBuffers.Length);
}
e.WrittenToOutputBuffers = true;
}
做这样的感觉有点延迟 ,有点回声 ,我不知道如何解决这些问题。
我在网上搜索,让我消除了回声(AEC),但没有发现任何对C#有用的库。 有谁知道怎么帮我?
编辑1:我AsioOut.PlaybackLatency
是2048ms。 这是一个有点太高了..
编辑2:我试着用耳机和我注意到回声仅仅是由于麦克风与扬声器之间的接近,所以它不是一个问题,但它会是有趣的,有一个AEC。
问题就解决了 :我解决了延迟问题。 这是我的ASIO驱动的问题,我卸载Cubase和我安装了ASIO4ALL驱动程序,现在它工作正常。 PS:我不得不在最后参数添加* 2 MoveMemory
。 我不知道为什么,但没有它,你听到喷的声音。