|
通过rtt渲染出图片以后,写入avi视频文件中,通过下述语句
AVIStreamWrite( m_pStreamCompressed, WriteCt, 1, (LPBYTE)(image->data()), BitmapHeader.biSizeImage, AVIIF_KEYFRAME, NULL, NULL ); 保存的视频画面总是变质,与真实的不符。
而先写入bmp文件,在顺序读取内容则如:
fread(&bmpFileHdr,sizeof(BITMAPFILEHEADER),1,fp);
fread(&bmpInfoHdr,sizeof(BITMAPINFOHEADER),1,fp);
BYTE* tmp_buf = NULL;
tmp_buf = new BYTE[width * height * 3];
fread(tmp_buf, 1, width * height * 3, fp);
再通过
AVIStreamWrite( m_pStreamCompressed, WriteCt, 1, (LPBYTE)(tmp_buf), BitmapHeader.biSizeImage, AVIIF_KEYFRAME, NULL, NULL );就不会出现问题。
按推理来说,bmp图片的内容是由image输出的。应该可以通过image->data得到与tmp_buf同样的内容。但测试了几次均不正确。还望高手指教下,对image的写出过程不是太了解。 |
|