我正在使用Media Foundation样本中的示例项目MFCaptureToFile捕获一些传统的隔行扫描视频(使用Firewire),并使用H.264编码器将其编码为MP4文件。我想配置MF,以便输出H.264图像是渐进的。可以吗?
据我了解,我必须将ICodecAPI的AVEncVideoOutputScanType属性设置为eAVEncVideoOutputScan_Progressive。如何从IMFSinkWriter获取ICodecAPI?我是否使用GetServiceForStream方法?我试过,但是如果我使用GUID_NULL作为第二个参数,那么我得到E_NOINTERFACE,而对于第三个参数使用IID_ICodecAPI。
答案 0 :(得分:1)
您是否尝试在输出媒体类型上设置MF_MT_INTERLACE_MODE至MFVideoInterlace_Progressive?
IMFMediaType *pMediaTypeOut;
...
pMediaTypeOut->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive);
对于ICodecAPI
,这里有一个稍微修改过的编码示例来自MSDN,它从接收器编写器查询接口,它确实有效,但遗憾的是SetValue(CODECAPI_AVEncVideoOutputScanType,...)
的返回是{{1}因此,检查输出媒体类型上的值是否可以完成作业。
E_NOTIMPL