我创建了一个c++ dll ,它使用DirectShow API在面板句柄处显示相机实时流。我的相机是罗技 c920 网络摄像头。我的相机在第三个输出引脚上提供 H264 编解码器。
当我使用 graphEdit 时,如果我将Logitech Webcam 3rd output Pin连接到Video Mixing Render 9 1st input pin,它会自动在连接之间添加 DTV-DVD microsoft 解码器,如下所示:
Logitech HD Pro Webcam C920 [Capturer] => [VMR Input0] Video Mixing Renderer 9
(当连接成为)
Logitech HD Pro Webcam C920 [Capturer] => [video Input1] Microsoft DTV-DVD Video Decoder [video Output 1] => [VMR Input0] Video Mixing Renderer 9
质量非常好,我在活动电影窗口上的视频流速度很快。
这是它变得不正确的地方。在我的代码中,我已将捕获源的第 3 个引脚直接连接到 vmr7 输入引脚(未添加 dt-dvd 解码器)。我还使用 IAMStreamConfig 将视频设置设置为 1600x896 和 H264 Mediatype。
我在 msdn 上读到(如果我理解正确的话),directshow 会自动在两个连接的引脚之间放置必要的过滤器。它工作正常,但视频质量很糟糕。看起来有很多像素混合或损坏。我也没有任何证据表明添加了过滤器。是因为我没有以编程方式将解码器放在它们之间吗?如果可以的话,我该如何添加这个过滤器?
在此先感谢并为英语感到抱歉。