DirectShow图中的视频延迟

时间:2014-10-28 22:54:56

标签: windows audio video directshow

我看到一个引人注目的视频,导致我测试的采集卡关闭了音频/视频同步。我的图形拓扑结构如下。

Video Source -> Sample Grabber -> Null Renderer

Audio Source -> Sample Grabber -> Null Renderer

使用H264压缩视频中的样本,使用FAAC压缩音频。此拓扑和应用程序代码适用于我过去使用过的捕获卡。但是我看到我正在测试的当前卡的延迟。当然我认为它与卡本身有关。所以我检查了一下,发现使用Open Broadcaster,VLC或GraphEdit中的相同图形来捕获此卡时没有视频/音频异步。

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

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

1 个答案:

答案 0 :(得分:1)

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

可能的原因包括:

  1. 视频和音频源独立时间戳数据,错误地传送不同步的数据 - 看起来不像你的情况
  2. 您忽略时间戳,并使用实际到达时间的样本抓取器,这是不正确的
  3. 中间的另一个过滤器,例如解码器,在处理数据时错误地重新放大数据