具有多个视频帧的 DirectShow 变换过滤器 - 与音频同步

Posted

技术标签:

【中文标题】具有多个视频帧的 DirectShow 变换过滤器 - 与音频同步【英文标题】:DirectShow transform filter with multiple video frames - Sync with audio 【发布时间】:2014-06-03 12:39:21 【问题描述】:

我编写了一个 DirectShow 转换过滤器(在 C# 中,但在 C++ 中的概念相同),它在将多个视频帧发送到渲染器之前缓冲多个视频帧(因此会有延迟)。这些帧在生成输出帧之前进行处理(想想 6 帧的滑动窗口)。

在 6fps 视频源上,这会导致 1 秒延迟。音频最终会比视频提前 1 秒播放。如何让图表延迟相同数量的音频?

【问题讨论】:

【参考方案1】:

视频和音频渲染器呈现与附加时间戳相关的数据。您需要重新标记音频数据以添加所需的延迟。

【讨论】:

当音频数据不受我控制时,我该怎么做?我只能控制转换过滤器(以及下游的分配器)。 您通常通过音频转换过滤器执行此操作。带有 SampleCB 回调的 Sample Grabber 也可以解决问题。 我不能完全强制我的转换过滤器的用户插入一个单独的音频转换过滤器。 这不会创建您选项的全貌,您需要添加更多详细信息。

以上是关于具有多个视频帧的 DirectShow 变换过滤器 - 与音频同步的主要内容,如果未能解决你的问题,请参考以下文章

在 directshow 过滤器中保存帧

Directshow:如何更改视频的大小和帧率?

如何在 Windows 7 上通过 DirectShow 播放 MPEG-TS 视频?

DirectShow 的 eof 检测

用于动画关键帧的 Sass Mixin,包括多个阶段和变换属性

为自定义视频输入硬件添加对 QuickTime 的支持