Я могу успешно кодировать видео H264 с помощью MediaFoundation.
Теперь я хочу экспортировать HEVC, который, согласно официальной документации , поддерживается.
Я делаю все, как описано здесь, но всякий раз, когда я хочу установить тип носителя ввода для устройства записи, это заканчивается ошибкой:
Не найдено подходящего преобразования для кодирования или декодирования содержимого.
Вот краткий код того, что я делаю:
/ * Установка типа носителя для вывода * /
IMFMediaType* pMediaTypeOut = nullptr;
MFCreateMediaType(&pMediaTypeOut);
pMediaTypeOut->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
pMediaTypeOut->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_HEVC);
MFSetAttributeSize(pMediaTypeOut, MF_MT_FRAME_SIZE, 640, 480);
MFSetAttributeRatio(pMediaTypeOut, MF_MT_FRAME_RATE, 30, 1);
pMediaTypeOut->SetUINT32(MF_MT_MPEG2_PROFILE, eAVEncH265VProfile_Main_420_8);
pMediaTypeOut->SetUINT32(MF_MT_MPEG2_LEVEL, eAVEncH265VLevel1);
// Add it to the sink writer
m_pWriter->AddStream(pMediaTypeOut, &m_streamIndex);
/ * Установка типа носителя для ввода * /
IMFMediaType* pMediaTypeIn = nullptr;
MFCreateMediaType(&pMediaTypeIn);
pMediaTypeIn->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
pMediaTypeIn->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_NV12);
MFSetAttributeSize(pMediaTypeIn, MF_MT_FRAME_SIZE, 640, 480);
MFSetAttributeRatio(pMediaTypeIn, MF_MT_FRAME_RATE, 30, 1),
MFSetAttributeRatio(pMediaTypeIn, MF_MT_PIXEL_ASPECT_RATIO, 1, 1),
// Here it ends up with an error
m_pWriter->SetInputMediaType(m_streamIndex, pMediaTypeIn, nullptr);
Кто-нибудь знает, действительно ли поддерживается кодировка HEVC или это просто документация?И если он действительно поддерживается Microsoft, то что я делаю не так?
Кстати: я использую последнюю версию Windows 10. Для простоты кода проверка ошибок опущена