DirectShow视频播放太快时音频引脚渲染数据

DirectShow video playing too fast when audio pin rendering data

本文关键字:引脚 数据 音频 视频 播放 DirectShow      更新时间:2023-10-16

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

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

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

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

有什么建议可以导致这个或进一步调查的建议吗?

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

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

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

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

我在发布问题后直接意识到这个问题。通过正确地提出问题来进行调试的案例。

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