Записывание видео из окна OpenGL в Windows

Для выполнения мокко с экспериментальными модулями , Вы должны:

  1. мокко-erm установки: npm install mocha-esm --only-dev
  2. запускает Ваши тесты с npx mocha client/assets/utils/url-utils.test.mjs -r esm
11
задан Community 23 May 2017 в 10:33
поделиться

3 ответа

Существует два различных вопроса здесь - как захватить кадры из приложения OpenGL, и как превратить их в файл ролика.

Первый вопрос достаточно легок; Вы просто захватываете каждый кадр с glReadPixels () (через PBO при необходимости в производительности).

Второй вопрос немного более труден, так как межплатформенные решения (ffmpeg) имеют тенденцию быть GPL'd или LGPL'd. Действительно ли LGPL приемлем для Вашего проекта? Windows способ сделать этот (DirectShow) является чем-то вроде головной боли для использования.

Править: Так как LGPL в порядке, и можно использовать ffmpeg, видеть здесь для примера того, как закодировать видео.

8
ответ дан 3 December 2019 в 10:27
поделиться

Это действительно выглядит довольно важным для слияния в AVI (как предложил Andrew), однако я действительно надеялся избежать LPBITMAPINFOHEADERs и т.д.

Спасибо за ответы я сообщу относительно успеха, если там будет быть кем-либо :)

Тем временем дополнительные подсказки для кодирования сырых данных структурируют от glReadPixels в видеоклипы ценился бы.

Править: До сих пор ffmpeg предложенный Mike F, кажется, способ пойти. Однако я еще не вошел в фактическую реализацию, но надо надеяться который изменится в ближайшем будущем!

1
ответ дан 3 December 2019 в 10:27
поделиться

Самая легкая опция будет сохранением каждого представленного кадра из Вашего приложения и затем слияния их в AVI. Когда у Вас есть AVI существуют многие библиотеки, доступные, который может преобразовать его в более оптимальный формат, или возможно пропускать шаг AVI в целом.

С точки зрения получения каждого кадра Вы могли выполнить это или путем рендеринга во внеэкранной структуре, как Вы предполагаете или использование backbuffer непосредственно как источник если Ваша поддержка оборудования это. Выполнение любого из них (и сохранение каждого кадра) будут трудными без большого штрафа на framerate.

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

0
ответ дан 3 December 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: