最近想做ffmpeg的H264编码,网上找了好久,多数都是跟这个一样的http://blog.csdn.net/eightdegree/article/details/7425635,于是将其整理了下,下面贴出代码
/* g++ -o test test.cpp -lavformat -lavcodec -lavutil -lz -lm -lpthread -lSDL -lswscale */
#include <stdio.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include<string.h>
#include<malloc.h>
//#include <SDL/SDL.h>
#pragma pack(1)
int main()
{
typedef struct tagBITMAPFILEHEADER
{
unsigned short bfType; //2 位图文件的类型,必须为“BM”
unsigned long bfSize; //4 位图文件的大小,以字节为单位
unsigned short bfReserved1; //2 位图文件保留字,必须为0
unsigned short bfReserved2; //2 位图文件保留字,必须为0
unsigned long bfOffBits; //4 位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;//该结构占据14个字节。
printf("%d\n",sizeof(BITMAPFILEHEADER));
typedef struct tagBITMAPINFOHEADER{
unsigned long biSize; //4 本结构所占用字节数
long biWidth; //4 位图的宽度,以像素为单位
long biHeight; //4 位图的高度,以像素为单位
unsigned short biPlanes; //2 目标设备的平面数不清,必须为1
unsigned short biBitCount;//2 每个像素所需的位数,必须是1(双色), 4(16色),8(256色)或24(真彩色)之一
unsigned long biCompression; //4 位图压缩类型,必须是 0(不压缩),1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
unsigned l