AVI格式文件读取测试代码

这段代码展示了如何在VC环境中读取和解析AVI格式文件。主要涉及AVI文件的结构,包括RIFF、AVI、hdrl、LIST、strl、strf、strd、JUNK、idx1等关键部分,以及如何处理视频帧数据并将其写入新的264文件。
摘要由CSDN通过智能技术生成
 
AVI格式文件读取测试代码:以下代码在VC中测试通过,关键是帮助搞清楚AVI文件的格式。
 
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"




typedef unsigned long DWORD;

typedef struct _avimainheader
{
	DWORD dwMicroSecPerFrame;  //视频帧间间隔时间(以毫秒为单位)
	DWORD dwMaxBytesPerSec; //最大传输速率
	DWORD dwPaddingGranularity;  //数据填充的粒度
	DWORD dwFlags;  //全局标记,比如是否含有索引块等
	DWORD dwTotalFrames;  //总帧数
	DWORD dwInitialFrames;  //为交互格式指定初始帧数(非交互格式应指定为0)
	DWORD dwStreams;  //本文件包含的流的个数
	DWORD dwSuggestedBufferSize;  //建议读取文件的缓冲大小
	DWORD dwWidth;  //视频图像宽
	DWORD dwHeight;  //视频图像高
	DWORD dwReserved[4];  //保留
}AVIMAINHEADER;

typedef struct _RECT
{

	long left;
	long top;
	long right;
	long botton;
}RECT;

typedef unsigned char FOURCC[4];
typedef struct _avistreamheader
{
	FOURCC fccType;
	FOURCC fccHandler;
	DWORD  dwFlags;
	DWORD  dwPriority; 
	DWORD  dwInitialFrames;  // 为交互格式指定初始帧数
	DWORD  dwScale;  // 这个流使用的时间尺度
	DWORD  dwRate;
	DWORD  dwStart;  // 流的开始时间
	DWORD  dwLength;  // 流的长度(单位与dwScale和dwRate的定义有关)
	DWORD  dwSuggestedBufferSize;  // 读取这个流数据建议使用的缓存大小
	DWORD  dwQuality;  // 流数据的质量指标(0 ~ 10,000)
	DWORD  dwSampleSize;  // Sample的大小
	RECT   rcFrame;
}AVISTREAMHEADER;

typedef struct _aviindexentry
{
	DWORD ckid;
	DWORD dwFlags;
	DWORD dwChunkOffset;
	DWORD dwChunkLenght;
}AVIINDEXENTRY;

typedef unsigned long LONG;
typedef unsigned short int WORD;

typedef struct tagBITMAPINFOHEADER{
	DWORD  biSize; 
	LONG   biWidth; 
	LONG   biHeight; 
	WORD   biPlanes; 
	WORD   biBitCount; 
	DWORD  biCompression; 
	DWORD  biSizeImage;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值