에 FPS를 변경할 수 없습니다 하나의 문제를 만났다 - 웹캠에서 MF를 사용하여 필요한 FPS를 설정할 수 없습니다 . MF에서는 30fps 만 설정할 수있었습니다. 25fps로 설정하려고하면 SetCurrentMediaType()에서 항상 0xc00d5212 오류가 발생합니다. DS에서 그 매개 변수를 변경할 수 있습니다.미디어 재단 : 웹캠
내 코드 : 어떤 도움
ASSERT(m_pReader); //IMFSourceReader *m_pReader;
IMFMediaType *pNativeType = NULL;
IMFMediaType *pType = NULL;
UINT32 w = 1280;
UINT32 h = 720;
UINT32 fps = 25; // or 30
DWORD dwStreamIndex = MF_SOURCE_READER_FIRST_VIDEO_STREAM;
// Find the native format of the stream.
HRESULT hr = m_pReader->GetNativeMediaType(dwStreamIndex, 0, &pNativeType);
if (FAILED(hr))
{
//error
}
GUID majorType, subtype;
// Find the major type.
hr = pNativeType->GetGUID(MF_MT_MAJOR_TYPE, &majorType);
if (FAILED(hr))
{
//error
}
// Define the output type.
hr = MFCreateMediaType(&pType);
if (FAILED(hr))
{
//error
}
hr = pType->SetGUID(MF_MT_MAJOR_TYPE, majorType);
if (FAILED(hr))
{
//error
}
// Select a subtype.
if (majorType == MFMediaType_Video)
{
subtype= MFVideoFormat_RGB24;
}
else
{
//error
}
hr = pType->SetGUID(MF_MT_SUBTYPE, subtype);
if (FAILED(hr))
{
//error
}
hr = MFSetAttributeSize(pType, MF_MT_FRAME_SIZE, w, h);
if (FAILED(hr))
{
//error
}
hr = MFSetAttributeSize(pType, MF_MT_FRAME_RATE, fps, 1);
if (FAILED(hr))
{
//error
}
hr = m_pReader->SetCurrentMediaType(dwStreamIndex, NULL, pType);
if (FAILED(hr))
{// hr = 0xc00d5212
//!!!!!error - if fps == 25
}
return hr;
감사합니다.
안녕 로마, 나는 당신의 MF 유틸리티를 시도하고 다음을 가지고 : 웹캠은 1 초당 30 프레임으로 작업 할 수 있습니다. 그러나 DS는 5, 10, 15, 20, 25 및 30 fps와 같은 또 다른 것을 보여주었습니다. 왜? 또는 웹캠은 30fps 밖에 없지만 DS는 다른 프레임 속도에서 해당 fps를 나눌 수 있습니까? 그것은 사실입니까? –
WDM 드라이버가 여러 프레임 속도를보고하지만 정보가 불완전하고 MF 레이어로 필터링 될 수 있습니다. 그냥 짐작할 수 있습니다 - 확실한 것을 말하기에 충분한 정보가 없습니다. –
안녕하세요, 저는이 제한이 UVC와 관련이 있다고 생각합니다 - USB Video Class - Media Foundation 용 드라이버. 플랫폼 WindowsStore를 대상으로하며 RGB 및 MJPEG 형식뿐만 아니라 하드웨어 인코더의 H264 및 H265 형식으로 비디오를 가져 오는 USB 카메라와 함께 작동하도록 최적화되어있어 기능 제한으로 이어집니다. 더 많은 기능을 사용하려면 DShow를 사용하거나 필요한 프레임 속도로 프레임을 잡는 타이머를 작성해야합니다. –