이 훨씬 효과적인 솔루션입니다 그리고 난 100 % 작동,하지만 할 수있는 것은 확실하지 않다 :
1)에서 시작은 (내가 이해로 사용할 수있는 모든 코덱을 열거 이 경우 H264 인코더)과에서 변경 이벤트를 설정에 가입
MFT_REGISTER_TYPE_INFO TransformationOutput = { MFMediaType_Video, MFVideoFormat_H264 };
DWORD nFlags = MFT_ENUM_FLAG_ALL;
UINT32 nCount = 0;
CLSID* pClsids;
MFTEnum(MFT_CATEGORY_VIDEO_ENCODER, nFlags, NULL, &TransformationOutput, NULL, &pClsids, &nCount);
// Ok here we assume nCount is 1 and we got the MS encoder
ICodecAPI *pMsEncoder;
hr = CoCreateInstance(pClsids[0], NULL, CLSCTX_INPROC_SERVER, __uuidof(ICodecAPI), (void**)&pMsEncoder);
// nCodecIds is supposed to be an array of identifiers to distinguish the sender
hr = pMsEncoder->RegisterForEvent(CODECAPI_AVEncVideoOutputFrameRate, (LONG_PTR)&nCodecIds[0]);
2) 100 % 프레임 레이트 설정이 또한 스트림을위한 입력 미디어 타입이 설정 될 때 설정되어 있지만 어쨌든 당신이 시도 할 수 있는지 확인 동일한 속성을 SinkWriter
에서 검색 한 ICodecAPI
에 설정하십시오. 그런 다음 이벤트를 가져온 후 lParam1
을 전달 된 값과 비교하여 코덱을 식별 할 수 있어야합니다. 그러나 스트림 구성시 생성되는 이벤트에 대한 가설이 잘못된 경우 모든 인코더가 이벤트 알림을 지원하고 불필요한 매개 변수 변경이 필요하다는 사실에 의존하기 때문에 여전히 매우 가난합니다.
아무도 아직 이에 대한 응답을 찾지 못했습니까? 이것은 매우 기본적인 것으로 보이지만 적어도 GUID는 도움이 될 것입니다. –