我正在为每个引脚开发一个基于CSource和CSourceStream的自定义Windows DirectShow源过滤器。有两个引脚-视频输出和音频输出。当使用正确的时间戳、帧速率和声音在图形编辑和类似工具(如Graph Studio )中单独渲染时,这两个引脚都工作得很好。我正在将视频渲染到视频混合渲染器(VMR7或VMR9)。
然而,当我渲染两个引脚时,视频播放速度太快,而音频听起来仍然正确。视频回放速度大约快了50%,但我认为这受到解码速度的限制。
在这两种情况下,样本上的时间戳是相同的。如果我将音频流渲染到空渲染器(qedit.dll中的渲染器),则视频流将以正确的帧速率播放。该过滤器是在Win7 x64系统上运行的32位过滤器。
当我添加对IMediaSeeking搜索的支持时,我发现音频流的搜索栏表现得相当奇怪。然而,如果没有IMediaSeeking支持,问题就会发生。
对可能导致这种情况的原因有什么建议,或者对进一步调查有什么建议?
音频和视频引脚的输出类型粘贴如下:
Mediatyp:视频子类型: RGB24格式:类型VideoInfo视频大小:1024x576像素,24位图像大小: 1769472字节压缩: RGB源:宽度0,高度0目标:宽度0,高度0码率:0比特/秒。错误率:0位/秒。平均显示时间: 41708微秒。
Mediatyp:视频子类型: RGB32格式:类型VideoInfo视频大小:1024x576像素,32位图像大小: 2359296字节压缩: RGB源:宽度0,高度0目标:宽度0,高度0码率:0位/秒。错误率:0位/秒。平均显示时间: 41708微秒。
主要类型:音频子类型: PCM音频样本大小:3型WaveFormatEx波形格式:未知通道:1样本/秒: 48000平均。字节/秒:144000块对齐:3位/采样: 24
发布于 2011-08-31 23:43:14
在发布了这个问题后,我立即意识到了这个问题。通过正确构造问题来进行调试的一个案例。
音频流的时间戳完全是假的。音频流和视频流可以单独播放,但在一起播放时根本不会彼此同步。
https://stackoverflow.com/questions/7264485
复制相似问题