Ошибка кодека Media Foundation при попытке H265 - успешно в H.264 - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь кодировать видео с помощью Media Foudation.

Следующий код работает, когда кодек имеет формат h.264:

// Setup output type
hr = pMediaTypeOutVideo->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
hr = pMediaTypeOutVideo->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_H264);
hr = pMediaTypeOutVideo->SetUINT32(MF_MT_AVG_BITRATE, 4000000);
hr = MFSetAttributeSize(pMediaTypeOutVideo, MF_MT_FRAME_SIZE, 1920,1080);
hr = MFSetAttributeRatio(pMediaTypeOutVideo, MF_MT_FRAME_RATE, 25, 1);
hr = MFSetAttributeRatio(pMediaTypeOutVideo, MF_MT_PIXEL_ASPECT_RATIO, 1,1);
hr = pMediaTypeOutVideo->SetUINT32(MF_MT_INTERLACE_MODE,MFVideoInterlace_Progressive);
hr = pSinkWriter->AddStream(pMediaTypeOutVideo, &OutVideoStreamIndex);

// Setup input type
hr = pMediaTypeVideoIn->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
hr = pMediaTypeVideoIn->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_NV12);
hr = MFSetAttributeSize(pMediaTypeVideoIn, MF_MT_FRAME_SIZE, 1920, 1080);
hr = MFSetAttributeRatio(pMediaTypeVideoIn, MF_MT_FRAME_RATE, 25, 1);
hr = MFSetAttributeRatio(pMediaTypeVideoIn, MF_MT_PIXEL_ASPECT_RATIO, 1, 1);
hr = pSinkWriter->SetInputMediaType(OutVideoStreamIndex, pMediaTypeVideoIn, NULL);

Последний вызов успешно выполняется только с MFVideoFormat_H264. С MFVideoFormat_HEVC, MFVideoFormat_VP80, MFVideoFormat_VP90 последний вызов завершается неудачно с 0xc00d5212 : No suitable transform was found to encode or decode the content.

Не пропущено ли какое-либо свойство в кодере h.265 или других кодировщиках?

...