0

我正在使用 DirectShow 播放电影。我修改视频/音频数据并在我的应用程序中自己渲染所有内容。因此,我使用的是 SampleGrabber 过滤器和 NULL 渲染器。

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

带有样本采集器过滤器的电影图

我了解音视频同步基础知识和时间戳。我确实了解渲染过滤器可能会根据呈现时间丢帧。

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

4

1 回答 1

1

在示例抓取器回调中,您会收到带有时间戳的数据。如果您保留获得的时间戳,并确保使用这些时间戳同步数据回放,以便随时在所有流上播放具有相同时间戳的数据 - 那么您的同步将保持良好状态.

样本采集器接收所有数据,但这并不意味着这些数据以同步的顺序到达采集器。匹配时间戳是绝对必要的。因为视频可能会被暂时压缩而音频通常不会被压缩,所以您的搜索可能会在视频腿上为您提供额外的预卷数据,您可能无法正确处理这些数据。

于 2014-04-24T17:18:47.857 回答