自分でコーディングすることもできますが、それほど難しくはありません。
AVIエンコーディングの場合、Revelを使用できます。JPG画像処理には、libJPEGを使用できます。他の形式の画像がある場合は、適切なライブラリを使用してそれらを読み取ることができます。
すべての画像を読み取ってエンコードするための完全なコードは少し長くなります。そこで、擬似コードを使用するアイデアを紹介します。同様のタスクを行ったときも同じように使用しました。
#include "revel.h"
extern "C" {
#include "libjpeg/jpeglib.h"
}
std::vector<BYTE> frame_buffer;
Revel_Error revError;
int encoderHandle;
revError = Revel_CreateEncoder(&encoderHandle);
Revel_Params revParams;
Revel_InitializeParams(&revParams);
revParams.width = ; // put image width here
revParams.height = ; // put image height here
//
revParams.frameRate = 25;
revParams.quality = 1.0f;
revParams.codec = REVEL_CD_XVID;
revParams.hasAudio = 0;
revParams.audioSampleFormat = REVEL_ASF_UNKNOWN;
char favi[] = "encoded_video.avi";
revError = Revel_EncodeStart(encoderHandle, favi, &revParams);
while(read & decode every image into 'frame_buffer' with apropriate lib)
{
Revel_VideoFrame frame;
frame.width = image.getwidth();
frame.height = image.getheight();
frame.bytesPerPixel = ; // color depth in bytes. if you're using libjpeg it would be cinfo.num_components;
frame.pixelFormat = REVEL_PF_BGR;
frame.pixels = &frame_buffer[0];
int frameSize;
revError = Revel_EncodeFrame(encoderHandle, &frame, &frameSize);
}
int totalSize;
revError = Revel_EncodeEnd(encoderHandle, &totalSize);
Revel_DestroyEncoder(encoderHandle);