首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法设置windows媒体视频9屏幕编码器

无法设置windows媒体视频9屏幕编码器
EN

Stack Overflow用户
提问于 2015-07-10 13:48:17
回答 1查看 625关注 0票数 3

设置输入类型时出现问题。我得到了一个错误:

MF_E_INVALIDMEDIATYPE:为媒体类型指定的数据无效、不一致或不受此对象支持。

有什么办法解决吗?

错误将在SetInputMediaType返回。

这是输入和输出的设置代码:

代码语言:javascript
复制
hr = MFCreateMediaType(&mediaTypeIn);
hr = mediaTypeIn->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
hr = mediaTypeIn->SetGUID(MF_MT_SUBTYPE,  MFVideoFormat_RGB24);
hr = mediaTypeIn->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive);
hr = MFSetAttributeSize(mediaTypeIn, MF_MT_FRAME_SIZE, width, height);
hr = MFSetAttributeRatio(mediaTypeIn, MF_MT_FRAME_RATE, fps_num, fps_den);
hr = MFSetAttributeRatio(mediaTypeIn, MF_MT_PIXEL_ASPECT_RATIO, 1, 1);

hr = MFCreateMediaType(&mediaTypeOut);
hr = mediaTypeOut->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video); 
hr = mediaTypeOut->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_MSS2);
hr = mediaTypeOut->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive);
hr = mediaTypeOut->SetUINT32(MF_MT_AVG_BITRATE, bit_rate);
hr = MFSetAttributeSize(mediaTypeOut, MF_MT_FRAME_SIZE, width, height);
hr = MFSetAttributeRatio(mediaTypeOut, MF_MT_FRAME_RATE, fps_num, fps_den);
hr = MFSetAttributeRatio(mediaTypeOut, MF_MT_PIXEL_ASPECT_RATIO, 1, 1);

hr = vx->sinkWriter->AddStream(mediaTypeOut, &vx->streamIndex);

// No problems before this point, and the call below returns MF_E_INVALIDMEDIATYPE
hr = vx->sinkWriter->SetInputMediaType(vx->streamIndex, mediaTypeIn, NULL);
EN

回答 1

Stack Overflow用户

发布于 2015-07-13 12:08:50

你不告诉我们什么是宽度,高度,fps_num,fps_den等等。因此,例如,如果宽度为零,您将收到MF_E_INVALIDMEDIATYPE.

编辑

以下是答案:微软(MSFT)

如前所述,默认情况下Microsoft屏幕编码器不会注册。屏幕编码器的CLSID是CLSID_CMSSCEncMediaObject2。如果您想在应用程序中使用它,您需要使用CoCreateInstance手动创建它,然后将它插入到拓扑中,或者使用MFTRegisterLocalByCLSID在本地注册它。

默认情况下,系统上不存在MFVideoFormat_MSS2。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31342440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档