在回答here后,我遇到了一个我无法解决的特殊问题。在我的应用程序中,我试图可视化音频数据,就像在示例中提供的示例中使用麦克风类和来自麦克风缓冲区的数据一样。我还使用 DispatcherTimer 来跟踪UI中显示的时间。
有趣的是,与计时器相比,我注意到这些数据的音频可视化有些相当大的延迟(我会说每20秒录制约0.5秒延迟)。如果可能,我如何实时准确地可视化数据,以便 DispatcherTimer 和可视化数据的UI显示时间差异。
调度员计时器嘀嗒事件的间隔时间可能是100毫秒,而麦克风缓冲器的间隔也是相同的。
我应该采取什么措施来减少音频可视化与时间之间的延迟,如 DispatcherTimer 所示。
代码 DispatcherTimer
timer = new DispatcherTimer();
timer.Tick += Timer_Tick;
timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
timer.Start();
private void Timer_Tick(object sender, EventArgs e)
{
Microsoft.Xna.Framework.FrameworkDispatcher.Update();
numSeconds++;
if (numSeconds%10==0)
TimeTextBlock.Text = TimeSpan.FromSeconds(numSeconds/10).ToString(@"hh\:mm\:ss");
}
麦克风代码
microphone.BufferDuration = TimeSpan.FromMilliseconds(100);
buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
Microsoft.Xna.Framework.FrameworkDispatcher.Update();
microphone.BufferReady += new EventHandler<EventArgs>(Microphone_BufferReady);
microphone.Start();
private void Microphone_BufferReady(object sender, EventArgs e)
{
//Visualize buffer
//other logic
}