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

Cannot setup windows media video 9 screen encoder

本文关键字:屏幕 编码器 视频 媒体 设置 windows      更新时间:2023-10-16

设置输入类型时遇到问题。我得到这个错误:

mfe_invalidmediatype:为媒体类型指定的数据为无效、不一致或不支持。

有什么好办法吗?
SetInputMediaType处返回错误。
这是输入和输出的设置代码:

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);

你没有告诉我们什么是宽度,高度,fps_num, fps_den等等。例如,如果width为0,您将收到mfe_invalidmediatype…

编辑

答案如下:马特·安德鲁斯微软(MSFT)

正如前面提到的,微软屏幕编码器默认情况下没有注册。屏幕编码器的CLSID是CLSID_CMSSCEncMediaObject2。如果你想在应用程序中使用它,你要么需要使用CoCreateInstance手动创建它,然后将其插入到拓扑中,要么使用MFTRegisterLocalByCLSID在本地注册它。

MFVideoFormat_MSS2系统默认不存在