Я работал над потоковой передачей видео в реальном времени с использованием аппаратного ускорения кодирования и декодирования h.264, и мне удалось заставить его работать, используя Windows Media Foundation.
Я сжал кадры из формата RGB в NV12 с использованием видеопроцессора d3d11 и закодированные в h.264 с использованием аппаратного MFT.
Единственная проблема, с которой я сейчас столкнулся, заключается в том, что после декодирования и рендеринга видео на экране появляются эффекты наложения спектров и ореол вместе с текстом.
На изображениях внизу показана моя проблема.
Кадр перед кодированием
Frame after encoding and decoding
After some research, I came across H.264 / AV C 444 , в котором Microsoft решила эту проблему, представив полноэкранный режим AV C 444 с RDP 10.
В режиме AV C 444 мы можем получить текст с качеством 4: 4: 4 с Аппаратные кодеры / декодеры 4: 2: 0 за счет значительного повышения пропускной способности кадров.
Представляем режим AV C 444 Основная проблема использования AVC / H.264 в качестве единственного кода c в сценарии удаленного рабочего стола ios - это Текст показывает эффект ореола с типичными реализациями AVC / H.264. Это вызвано процессом преобразования цвета, который происходит как часть сжатия, при котором отбрасывается некоторая информация о цветности, представленная в формате 4: 2: 0. Для человеческого глаза отсутствие информации о цветности не так очевидно для видеоконтента, однако в сценарии удаленного рабочего стола ios, где в основном используется текст, это заметно, и пользователи будут воспринимать это как размытое. Стандарт AVC / H.264 определяет возможность использования формата 4: 4: 4, который не теряет цветность во время преобразования, однако обычно он не является частью большинства реализаций аппаратного кодера и декодера AVC / H.264 и, таким образом, обеспечивает вызов. Чтобы показать разницу между 4: 4: 4 и 4: 2: 0, посмотрите следующее изображение, на котором легко заметны различия:
AV C 444
Я попытался добиться того же в Media Foundation, но пока не смог найти какой-либо ресурс для его взлома.
Я выяснил, что преобразование цвета в NV12 является причиной этой проблемы и Я пытался решить эту проблему, я также пробовал YUV 444, но не смог найти аппаратный MFT, который его поддерживает. Мне не удалось закодировать любой другой цветовой формат, кроме NV12, с использованием аппаратной MFT
Есть ли способ решить эту проблему? Любая помощь будет принята с благодарностью.