Media Foundation: декодирование и отображение кадров H264 без контейнера
-
29-10-2019 - |
Вопрос
Сценарий таков: мое клиентское приложение для Windows получает кадры в кодировке H264 из сетевого источника без контейнера пользовательским способом (проприетарный протокол).Формат кадров известен.Мне нужно расшифровать кадры и отобразить видео.Требуется, чтобы воспроизведение было безупречным во время потоковой передачи HD, но при этом имелась возможность низкой задержки для других сценариев.
В настоящее время я использую libavcodec ffmpeg для декодирования кадров, а затем вручную отображаю их на экране с помощью StretchBlt.Мы рассматриваем возможность перехода на Media Foundation, но мне непонятно - возможно ли иметь источник, не использующий контейнер?если да, нужно ли мне создавать собственный?
Также приветствуются альтернативы использованию Media Foundation.Моя основная проблема с методом, который я сейчас использую, заключается в том, что производительность недостаточно высока, особенно для HD-видео.
Решение
Я не вижу, чтобы вы упомянули, что вам конкретно нужно или какой API-интерфейс Media Foundation
, поэтому я бы предложил DirectShow
, с помощью которого вы можете это сделать:
- настраиваемый источник, см. Пример использования исходных фильтров
- Декодер H.264, установленный в Windows 7 (аналогично Media Foundation) или сторонний (на выбор).
- средство визуализации видео, такое как EVR (совместно с Media Foundation) или более ранние версии.