我正在尝试使用Directshow中的MPEG2编码器将原始视频帧编码为mpeg2视频。从文件wmcodecdsp.h中过滤CLSID_CMPEG2EncoderVideoDS。 我已经创建了自己的推送源过滤器,它将原始帧注入过滤器图形。输入帧格式为RGB24。但是当我尝试将Push源滤波器的输出连接到MPEG2视频编码器的输入时,我的滤波器图失败了。
过滤器图表具有以下结构。
推送源---> MPEG2视频编码器----> AVI Muxer ---> Filer Write(容器格式.avi)。
我发现失败的真正原因是由于Push滤波器的输出引脚和MPEG2编码器的输入引脚之间的媒体格式不匹配。
Push滤波器输出引脚的媒体格式为
然而,MPEG2编码器输入引脚的媒体格式对于次要类型和cbformat是不同的(基本上GUID不匹配)。是否可以使用SetMediaFormat()手动设置MPEG2编码器的媒体格式。在MSDN网站上提到MPEG2编码器支持RGB24输入格式。 我用其他编码器如MJPEG压缩器尝试了我的滤波器图。它工作正常。 请分享您的想法。
谢谢和问候
与Pradeep