2014-10-28 64 views
1

我正在看到一个引人注目的视频,该视频导致我正在测试的采集卡关闭音频/视频同步。我的图形拓扑如下。DirectShow图中的视频延迟

Video Source -> Sample Grabber -> Null Renderer

Audio Source -> Sample Grabber -> Null Renderer

从视频样品是使用H264压缩,和音频使用FAAC压缩。这种拓扑结构和应用程序代码适用于我过去使用的采集卡。但是我看到了我正在测试的当前卡的延迟。当然,我认为它与卡本身有关。因此,我检查并发现,使用Open Broadcaster,VLC或GraphEdit中的同一图形来捕获此卡时,不会出现视频/音频异步。

这表明问题与我如何构建图表有关。然后,我尝试使用IAMBufferNegotiation以及SetStreamSyncOffset调整缓冲区大小,但未成功。

如果我对视频应用500毫秒的延迟(例如videoTimeStamp = videoTimeStamp - 500),则同步几乎是完美的。这很奇怪,因为我期望在视频中看到更多的音频延迟。

回答

1

视频和音频同步全是关于时间戳的。视频或音频分支可能会延迟处理数据,但它是显示原始和预期同步的时间戳。

可能的原因包括:

  1. 视频及音频信号源独立数据使用时间戳,错误地传递不同步的数据 - 看起来并不像你的情况
  2. 你忽略时间戳和您使用样本实际到达时间你样本采集卡,这是不正确的
  3. 另一个介于两者之间的过滤器(如解码器)在处理过程中错误地恢复数据