C库直接从Linux上的缓冲区构建视频,最好是可移植到Windows和Mac OS X.

时间:2011-05-09 20:32:22

标签: c++ open-source mpeg

我有一个在OpenGL中创建帧缓冲区的程序。我可以将缓冲区保存为.png或.jpg文件,我熟悉Windows上的一些实用程序(如http://www.radgametools.com/bnkmain.htm),它们会将多个图像文件转换为.mpg

但是我想要一个开放源代码库来调用RAM中的缓冲区。这样的API是否存在?

2 个答案:

答案 0 :(得分:4)

ffmpeg的libavcodec可能是一个很好的起点。

答案 1 :(得分:4)

由于您正在寻找图书馆,我建议您查看 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);
}