Настройте IWMWriter для записи видео 4K

Этот вопрос касается использования Window Media API для вывода видео 4K WMV (хотя теоретически WMV не поддерживает вывод до 4K)

После вызова IWMWriter-> BeginWriting () на 32-битной и 64-битной Win10 (в обеих системах BeginWriting () возвращает S_OK), программе требуется около 450 МБ памяти.

После этого я начинаю использовать IWMWriter-> AllocateSample () для выделения буфера семплов и записи его в приемник, используя IWMWriter-> WriteSample ().

На 64-битной Win10 преобразование может закончиться изящно, но на 32-битной Win10, WriteSample () завершается с ошибкой «недостаточно памяти» после записи нескольких кадров.

Единственное отличие, которое я вижу на двух системах: перед вызовом BeginWriting () 64Win10 занимает 110 МБ памяти, поэтому после вызова BeginWriting () используется 110 + 450.
В 32-разрядной версии Win10 150 МБ используется до BeginWriting (), поэтому после этого используется 150 + 450.

Пиковый рабочий набор неудачного преобразования составляет всего 761 МБ, любой знает, почему в этом случае WriteSample () возвращается из памяти. Есть ли обходной путь для этого?

== Обновление: ===================================================

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

Если я извлекаю звуковую дорожку из файла, чтобы она содержала только видео, преобразование может закончиться изящно. Максимальный рабочий набор составляет 716 МБ.

2

Решение

Речь идет о требованиях к памяти видеокодера: в этом разрешении приложение не соответствует стандартному 2 ГБ адресного пространства 32-разрядного приложения. Вы можете связаться с / LARGEADDRESSAWARE обойти из памяти условия.

0

Другие решения

Других решений пока нет …