[英]Can Video capture in windows media foundation used for screen capturing?
[英]Cannot setup windows media video 9 screen encoder
設置輸入類型時遇到問題。 我收到這個錯誤:
MF_E_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為零,您將收到MF_E_INVALIDMEDIATYPE ...
編輯
答案是: Matt Andrews Microsoft(MSFT)
如前面在此主題中所述,默認情況下未注冊Microsoft屏幕編碼器。 屏幕編碼器的CLSID是CLSID_CMSSCEncMediaObject2。 如果要在應用程序中使用它,則需要使用CoCreateInstance手動創建它,然后將其插入拓撲中,或使用MFTRegisterLocalByCLSID在本地注冊它。
默認情況下,MFVideoFormat_MSS2不存在於系統上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.