запись видео opengl без отдельной программы или библиотеки

Как мне взять данные из объекта FIBITMAP (изображения в произвольном изображении) и сохранить их в двоичном файле.

я уже знаю, как хранить данные в виде изображения, но вместо этого я бы хотел сохранить их как видео, похожее на Fraps. Моя цель — создать список изображений FIBITMAP и записать их в двоичный файл (формат .avi или .mp4).

это мой код скриншота:

   BYTE* pixels = new BYTE[ 3 * width * height];

glReadPixels(0, 0, width, height, GL_BGR, GL_UNSIGNED_BYTE, pixels);

// Convert to FreeImage format & save to file
FIBITMAP* image = FreeImage_ConvertFromRawBits(pixels, width, height, 3 * width, 24,             0x0000FF, 0xFF0000, 0x00FF00);
FreeImage_Save(FIF_PNG, image, "./images/test.avi");

// Free resources
FreeImage_Unload(image);
delete[] pixels;

0

Решение

Допустим, вы хотите сохранить его в avi. Это контейнерный формат, который определяет метаданные хранимого видеопотока (разрешение кадров, информацию о кодеке и т. Д.) И сам поток.
Есть много мест, где вы можете изучить его формат, а также RIFF в целом.

Другое дело, что если вы хотите воспроизвести видеофайл с помощью программного обеспечения «извне», вам необходимо предоставить кодек для системы, который программа-проигрыватель найдет в вашей ОС (вы как-то регистрируете кодек, это зависит от ОС). ), и кодек декодирует видеопоток, содержащийся в AVI, и передает кадры проигрывателю.
(На самом деле проигрыватель вызывает функцию декодирования с фрагментами потока, и ваш кодек должен взаимодействовать).

Конечно, в вашем видеопотоке каждый кадр является независимым и независимо кодируется от других. Но это не имеет значения с точки зрения OS-кодека. Ваш кодек имеет идентификатор (FOURCC), который должен быть установлен в разделе кодеков AVI, и проигрыватель будет искать кодек, используя этот идентификатор.

Может быть, на вашем месте я могу думать о движении JPEG. Это самая близкая существующая вещь по сравнению с тем, что вы делаете. Только в этом случае отдельные кадры не являются PNG, а JPEG.

0

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

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

По вопросам рекламы [email protected]