DirectShow视频播放太快时音频引脚渲染数据
DirectShow video playing too fast when audio pin rendering data
我正在为每个引脚制作基于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位/样本:
我在发布问题后直接意识到这个问题。通过正确地提出问题来进行调试的案例。
音频流有完全伪造的时间戳。音频和视频流单独播放时播放得很好,但在一起播放时根本不同步。
- 如何在 setup() 函数中使用数字引脚转动电机?
- 如何获取引脚 4 的值,以便也发送到从站并使用 I2C 显示?
- 直接显示 - 无法使用设置模式设置静止引脚
- 如何从 C 文件将引脚排列与 esp8266 一起使用?
- 如何在嵌入式平台中管理不同引脚输出板的代码,以实现更好的HAL管理
- Arduino Nano - 为什么我的引脚表现得如此?
- 使用硬件 RX 引脚作为 arduino 的中断引脚
- C++ 编译时检查微控制器引脚是否已从其他源文件初始化
- OneWire arduino 库,具有后期引脚定义
- 英特尔引脚:如何生成对象转储ish代码
- 如何从单独的PC控制Raspberry Pi的GPIO引脚
- 如何在Beanglebone黑色内核上启用RTS和CTS引脚4.1.15-Ti-RT-R43
- 英特尔引脚:检测运行过程
- 尝试使用引脚工具从堆栈中打印寄存器的值
- 如何为多个模拟引脚编写功能?(阿杜伊诺)
- QT 中的蓝牙 UUID 和引脚请求
- 使用"英特尔引脚"时跟踪不匹配的CALL和RET指令数
- 引脚类似工具,用于编译时注入检测代码
- 将0和1发送到USB数据引脚
- DirectShow视频播放太快时音频引脚渲染数据