Кодирование RGB в H.264 - PullRequest
       83

Кодирование RGB в H.264

1 голос
/ 11 января 2020

Я пытаюсь записать экран в windows XP и Win7. Я получил растровое изображение с помощью интерфейса DirectX CreateOffscreenPlainSurface и GetFrontBufferData. Мне нужно кодировать растровое изображение в видео формата H.264. Проблема заключается в том, что захваченное растровое изображение имеет формат D3DFMT_A8R8G8B8, но видеокодер H.264 может поддерживать только MFVideoFormat_I420, MFVideoFormat_IYUV, MFVideoFormat_NV12, MFVideoFormat_YUY2 и MFVideoFormat_YV12 в качестве входных данных. У меня вопрос, нужно ли мне передавать формат самостоятельно (я не хочу)? Есть ли другие лучшие решения для этого?

1 Ответ

4 голосов
/ 11 января 2020

Формат ввода соответствует MFVideoFormat_ARGB32.

Компонент стоковой ОС, который обрабатывает преобразование: Видеопроцессор MFT . Я не вижу информации о доступности в нижнем колонтитуле статьи MSDN, однако у меня сложилось впечатление, что этот MFT поставляется с Windows Vista, как и весь Media Foundation API.

В Windows XP есть был похожим Color Converter DSP , который предлагает действительно близкие сервисы и предоставляет действительно близкий интерфейс DirectX Media Object (DMO). Он доступен во всех более поздних операционных системах, однако он только программный и никогда не использует возможности графического процессора для преобразования.

Они оба могут обрабатывать запрошенное преобразование формата для вас.

Также для ссылка, Видеокодер H.264 был представлен только с Windows 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...