簡體   English   中英

無法設置Windows媒體視頻9屏幕編碼器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM