将ffmpeg视频帧数据转换为bmp结构

将ffmpeg视频帧数据转换为bmp结构

#include <windows.h>
static int av_create_bmp(char* filename,uint8_t *pRGBBuffer,int width,int height,int bpp)
{
   BITMAPFILEHEADER bmpheader;
   BITMAPINFO bmpinfo;
   FILE *fp;

   fp = fopen(filename,"wb");
   if(!fp)return -1;

   bmpheader.bfType = ('M'<<8)|'B';
   bmpheader.bfReserved1 = 0;
   bmpheader.bfReserved2 = 0;
   bmpheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
   bmpheader.bfSize = bmpheader.bfOffBits + width*height*bpp/8;
       
   bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
   bmpinfo.bmiHeader.biWidth = width;
   bmpinfo.bmiHeader.biHeight = height;
   bmpinfo.bmiHeader.biPlanes = 1;
   bmpinfo.bmiHeader.biBitCount = bpp;
   bmpinfo.bmiHeader.biCompression = BI_RGB;
   bmpinfo.bmiHeader.biSizeImage = 0;
   bmpinfo.bmiHeader.biXPelsPerMeter = 100;
   bmpinfo.bmiHeader.biYPelsPerMeter = 100;
   bmpinfo.bmiHeader.biClrUsed = 0;
   bmpinfo.bmiHeader.biClrImportant = 0;

   fwrite(&bmpheader,sizeof(BITMAPFILEHEADER),1,fp);
   fwrite(&bmpinfo.bmiHeader,sizeof(BITMAPINFOHEADER),1,fp);
   fwrite(pRGBBuffer,width*height*bpp/8,1,fp);
   fclose(fp);

   return 0;
}

[编辑] 调用实例
//------------------------------------
img_convert((AVPicture *)pFrameRGB, PIX_FMT_BGR24,(AVPicture*)pFrame,
pCodecCtx->pix_fmt, pCodecCtx->width,pCodecCtx->height);


来自:http://www.ffmpeg.com.cn/index.php/%E5%B0%86ffmpeg%E8%A7%86%E9%A2%91%E5%B8%A7%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E4%B8%BAbmp%E7%BB%93%E6%9E%84
http://www.ffmpeg.com.cn/index.php/Ffmpeg%E4%B9%8BWin32
http://bbs.chinavideo.org/viewthread.php?tid=2378

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值