我有一个在 OpenGL 中创建帧缓冲区的程序。我可以将缓冲区保存为 .png 或 .jpg 文件,并且我熟悉 Windows 上的一些实用程序(如http://www.radgametools.com/bnkmain.htm),它们会将多个图像文件转换为 .mpg
但我想要一个开源库来调用我已经在 RAM 中的缓冲区。这样的 API 存在吗?
我有一个在 OpenGL 中创建帧缓冲区的程序。我可以将缓冲区保存为 .png 或 .jpg 文件,并且我熟悉 Windows 上的一些实用程序(如http://www.radgametools.com/bnkmain.htm),它们会将多个图像文件转换为 .mpg
但我想要一个开源库来调用我已经在 RAM 中的缓冲区。这样的 API 存在吗?
ffmpeg 的 libavcodec 可能是一个不错的起点。
由于您正在寻找一个库,我建议您看看OpenCV(它是 Windows/Linux/Mac 上支持的跨平台库)。
我前段时间写过下面的代码。它从当前目录加载两个 JPG 图像并用它创建一个视频文件。我相信这足以让你开始。
#include <cv.h>
#include <highgui.h>
int main()
{
IplImage* img1 = cvLoadImage("img1.jpg", CV_LOAD_IMAGE_UNCHANGED);
IplImage* img2 = cvLoadImage("img2.jpg", CV_LOAD_IMAGE_UNCHANGED);
float fps = 20;
CvVideoWriter* writer = cvCreateVideoWriter("out.avi", CV_FOURCC('M','J','P','G'), fps, cvGetSize(img1), true);
if (!writer)
{
fprintf (stderr, "VideoWriter failed!\n");
return -1;
}
cvWriteFrame(writer, img1);
cvWriteFrame(writer, img2);
cvReleaseVideoWriter(&writer);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
}