在Directshow中连接Push Surce过滤器和MPEG2视频编码器

时间:2013-09-10 09:00:20

标签: directshow

我正在尝试使用Directshow中的MPEG2编码器将原始视频帧编码为mpeg2视频。从文件wmcodecdsp.h中过滤CLSID_CMPEG2EncoderVideoDS。 我已经创建了自己的推送源过滤器,它将原始帧注入过滤器图形。输入帧格式为RGB24。但是当我尝试将Push源滤波器的输出连接到MPEG2视频编码器的输入时,我的滤波器图失败了。

过滤器图表具有以下结构。

推送源---> MPEG2视频编码器----> AVI Muxer ---> Filer Write(容器格式.avi)。

我发现失败的真正原因是由于Push滤波器的输出引脚和MPEG2编码器的输入引脚之间的媒体格式不匹配。

Push滤波器输出引脚的媒体格式为

  1. Formattype = FORMAT_VideoInfo。
  2. 主要类型= MEDIATYPE_Video。
  3. 次要类型= MEDIASUBTYPE_RGB24。
  4. cbformat = 88。
  5. 然而,MPEG2编码器输入引脚的媒体格式对于次要类型和cbformat是不同的(基本上GUID不匹配)。是否可以使用SetMediaFormat()手动设置MPEG2编码器的媒体格式。在MSDN网站上提到MPEG2编码器支持RGB24输入格式。 我用其他编码器如MJPEG压缩器尝试了我的滤波器图。它工作正常。 请分享您的想法。

    谢谢和问候

    与Pradeep

0 个答案:

没有答案