我正在创建一种实时视频流应用程序并使用许多不同的库。我正在使用 NAudio在音频流进入时对其进行解包。我在他们的讨论板上发现了我这样使用的这个线程;
BufferedWaveProvider mybufferwp = null;
WaveOut wo = new WaveOut();
WaveFormat wf = new WaveFormat(16000, 1);
void MainWindow()
{
_audioClient = new AudioClient();
_audioClient.AudioFrameReady += _audioClient_AudioFrameReady;
_audioClient.Connect(parent.TempIp, parent.AudioPort);
mybufferwp = new BufferedWaveProvider(wf);
mybufferwp.BufferDuration = TimeSpan.FromMinutes(5);
wo.Init(mybufferwp);
wo.Play();
}
void _audioClient_AudioFrameReady(object sender, AudioFrameReadyEventArgs e)
{
if (mybufferwp != null)
{
mybufferwp.AddSamples(e.AudioFrame.AudioData, 0, e.AudioFrame.AudioData.Length);
}
}
我的问题是音频略有延迟。不是很理所当然,但它很明显,我希望我可以做一些事情来让它与我的视频源更加同步,这几乎是完美的直播。
额外信息 AudioClient 来自Kinect 服务,它允许我发送和接收 Kinect 相机数据。