我正在看到一个引人注目的视频,该视频导致我正在测试的采集卡关闭音频/视频同步。我的图形拓扑如下。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
),则同步几乎是完美的。这很奇怪,因为我期望在视频中看到更多的音频延迟。