C++ 音频pin渲染数据时DirectShow视频播放过快

C++ 音频pin渲染数据时DirectShow视频播放过快,c++,directshow,C++,Directshow,我正在基于每个pin的CSource和CSourceStream开发一个自定义Windows DirectShow源过滤器。有两个引脚-视频输出和音频输出。在GraphiEdit和类似工具(如Graph Studio)中单独渲染时,这两个管脚都可以正常工作,并具有正确的时间戳、帧速率和声音。我正在将视频渲染到视频混合渲染器(VMR7或VMR9) 但是,当我渲染两个管脚时,视频播放得太快,而音频仍然正确。视频播放速度过快约50%,但我认为这受到解码速度的限制 在这两种情况下,样本上的时间戳是相同的

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

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

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

当我添加对IMediseeking seeking seeking的支持时,我发现音频流的seeking条的行为非常奇怪。但是,如果没有IMediseek支持,问题就会发生

对可能导致这种情况的原因或进一步调查的建议有何建议

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

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微秒

主要类型:音频 子类型:PCM音频 样本量:3 类型波形 波形:未知 频道:1 样本/秒:48000 平均字节/秒:144000 块对齐:3
Bits/sample:24

发布问题后,我立即意识到了问题所在。通过正确构造问题进行调试的案例

音频流有完全伪造的时间戳。音频和视频流可以单独播放,但在一起播放时根本不同步