2016-09-21 2 views
0

Media Foundation h264 кодер низкой производительностьMedia Foundation h264 кодер низкая производительность

Я пишу приложение, которое записывает экран компьютера в режиме реального времени и кодирует его Media Foundation h264 кодек. Кодирование потребляет много ресурсов ЦП. И после того, как я прекратил запись видео (или приостановил его, просто прекратив подачу кодировщика с видео и аудио кадрами), загрузка процессора остается очень высокой в ​​течение длительного периода времени (5-10 секунд и более). В течение этого времени приложение ожидает завершения метода IMFSinkWriter :: Finalize.

Моя конфигурация ПК:

  • Intel i5-2410M 2,3 ГГц с 4 ядрами
  • 8 ГБ ОЗУ

Кодек конфигурации:

  • 25 кадров в секунду
  • тысяча триста шестьдесят четыре x 768 Разрешение
  • базовый профиль
  • 1,2 МБит битрейта

Является ли это ограничение MF производительности h264 кодеком, или это из-за ошибки/ошибок конфигурации в моем коде?

+0

Didi вы попробовали этот код, который я предоставил: http://stackoverflow.com/questions/33753912/directx-screen-capture-and-output-as-video/33946441#33946441 Для десяти минут видео Finalize очень быстро , – mofo77

ответ

0

Ожидается, что поведение конвейера, имеющего длинную внутреннюю очередь, будет поддерживать кодирование видео до тех пор, пока очередь не станет пустой. Поскольку, как кажется, программный кодер используется, и он довольно медленный, ваш источник захвата экрана генерирует достаточное количество данных, чтобы заполнить очереди настолько туго, что требуется дополнительное время для сортировки.

Решение будет заключаться в том, чтобы контролировать или уменьшать скорость передачи данных, или использовать быстрее, особенно. аппаратный, кодировщик. Однако Media Foundation может использовать аппаратные кодеры автоматически, поэтому я полагаю, что это не вариант для вас. Вы можете проверить наличие аппаратных кодеров, используя MediaFoundationVideoEncoderTransforms tool.