使用samplegrabber过滤器的音频/视频同步问题

时间:2014-04-24 16:48:46

标签: c++ directshow samplegrabber audio-video-sync

我正在使用DirectShow进行电影播放。我修改了视频/音频数据并在我的应用中自行渲染。因此,我正在使用SampleGrabber过滤器和NULL渲染器。

当我回放电影时出现问题(使用IMediaSeeking界面) - 音频显着落后于视频(几秒钟滞后)。

Movie graph with sample grabber filters

我了解a / v同步基础知识和时间戳。我知道渲染过滤器可以根据演示时间丢帧。

但我想SampleGrabber过滤器只是接收所有数据?是否可以在我的SampleCB回调中同步音频/视频数据?

1 个答案:

答案 0 :(得分:1)

在示例抓取器回调上,您会收到标记数据的时间。如果您保留了时间戳,并确保在任何时间使用这些时间戳在所有流上播放数据时使用这些时间戳同步数据回放 - 那么您将进行同步良好的信誉。

示例抓取器接收所有数据,但这并不意味着此数据以同步顺序到达抓取器。匹配时间戳是绝对必要的。由于视频可能会暂时压缩,而音频通常不会,因此您的搜索可能会在视频支路上获得额外的预卷数据,这可能无法正确处理。