当音频引脚渲染数据时,DirectShow视频播放速度过快

时间:2011-08-31 23:05:34

标签: c++ directshow

我正在为每个引脚开发基于CSource和CSourceStream的自定义Windows DirectShow源过滤器。有两个引脚 - 视频输出和音频输出。两个引脚在使用graphedit和类似工具(如Graph Studio)单独渲染时工作正常,具有正确的时间戳,帧速率和声音。我正在将视频渲染到视频混合渲染器(VMR7或VMR9)。

然而,当我渲染两个引脚时,视频播放得太快,而音频仍然听起来是正确的。视频播放速度约为50%,但我认为这受到解码速度的限制。

两种情况下样本的时间戳都相同。如果我将音频流渲染到空渲染器(qedit.dll中的那个),则视频流将以正确的帧速率播放。该过滤器是在Win7 x64系统上运行的32位过滤器。

当我添加对IMediaSeeking的支持时,我发现音频流的搜索栏表现得非常奇怪。但是,如果没有IMediaSeeking支持,问题就会发生。

有关可能导致此问题或建议进一步调查的任何建议?

音频和视频引脚的输出类型粘贴在下面:

Mediatyp:视频子类型:RGB24格式:类型VideoInfo视频大小:1024 x 576像素,24位图像大小:1769472字节压缩:RGB源:宽度0,高度0目标:宽度0,高度0比特率:0比特/秒。错误率:0位/秒。平均。显示时间:41708微秒。

Mediatyp:视频子类型:RGB32格式:类型VideoInfo视频大小:1024 x 576像素,32位图像大小:2359296字节压缩:RGB源:宽度0,高度0目标:宽度0,高度0比特率:0比特/秒。错误率:0位/秒。平均。显示时间:41708微秒。

Majortyp:音频 子类型:PCM音频 样本量:3 键入WaveFormatEx 波形格式:未知 频道:1 样品/秒:48000 平均。字节/秒:144000 块对齐:3 比特/样本:24

1 个答案:

答案 0 :(得分:1)

我在发布问题后直接意识到了这个问题。通过正确构建问题进行调试的案例。

音频流有完全虚假的时间戳。音频和视频流单独播放时很好,但在一起播放时根本不同步。