头文件 #include <Vfw.h>

成员变量:

// for avi;
PGETFRAME Frame;
BITMAPFILEHEADER BMPFileHeader;
PAVIFILE aviFile;
PAVISTREAM aviStream;
AVISTREAMINFO aviStreamInfo;
int m_nFrameNumber;
BITMAPINFO* m_pBitMapInfo;
BYTE* pData;
int cy;
int cx;
HANDLE handle;
//

读取代码:

    AVIFileInit();AVIFileOpen(&aviFile, "E:\\Alizee.avi", OF_READ, NULL);AVIFileGetStream(aviFile, &aviStream, streamtypeVIDEO, 0);AVIStreamInfo(aviStream, &aviStreamInfo, sizeof(aviStreamInfo));AVIFILEINFO fileInfo;AVIFileInfo(aviFile, &fileInfo, sizeof(AVIFILEINFO));cx = fileInfo.dwWidth;cy = fileInfo.dwHeight;AVIFileGetStream(aviFile, &aviStream, streamtypeVIDEO, 0);m_pBitMapInfo = new BITMAPINFO;m_pBitMapInfo->bmiHeader.biBitCount = 32;m_pBitMapInfo->bmiHeader.biClrImportant=0; m_pBitMapInfo->bmiHeader.biClrUsed=0; m_pBitMapInfo->bmiHeader.biCompression=0; m_pBitMapInfo->bmiHeader.biHeight=cy; m_pBitMapInfo->bmiHeader.biWidth=cx; m_pBitMapInfo->bmiHeader.biPlanes=1; m_pBitMapInfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);//m_pBitMapInfo->bmiHeader.biSizeImage = (cx * 24 + 31) / 32 * 4 * cy; //图像数据的大小;m_pBitMapInfo->bmiHeader.biSizeImage = 0;m_pBitMapInfo->bmiHeader.biXPelsPerMeter=0;m_pBitMapInfo->bmiHeader.biYPelsPerMeter=0; handle=GlobalAlloc(GHND,((long)((cx*24+31)/32*4)*cy)); pData=(BYTE*)GlobalLock(handle);BMPFileHeader.bfType = 0x4D42;BMPFileHeader.bfSize = (cx * 24 + 31) / 32 * 4 * cy + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); //图像的总大小;BMPFileHeader.bfReserved1=0;BMPFileHeader.bfReserved2=0;BMPFileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); //24位真彩色位图恒为54;//
    static CEngine* pEngine = ((CHKEditorApp*)AfxGetApp())->m_pEngine;assert(pEngine != NULL);m_nFrameNumber = 0;SetTimer(ID_AVI_TIMER, 1, 0);

定时器里面:

    case ID_AVI_TIMER:{if (m_nFrameNumber == aviStreamInfo.dwLength){KillTimer(ID_AVI_TIMER);return;}PGETFRAME   pg = AVIStreamGetFrameOpen(aviStream, &(m_pBitMapInfo-> bmiHeader)); pData = (BYTE*)AVIStreamGetFrame(pg, m_nFrameNumber++); //            CClientDC   dc(this);
//            CRect   rect;
//            GetClientRect(&rect);
//            StretchDIBits(HDC(dc),0,0,rect.right,rect.bottom,0,0,cx,cy,pData,(BITMAPINFO*)m_pBitMapInfo,DIB_RGB_COLORS,SRCCOPY);
Engine->m_pixelBuffer->lock(Ogre::HardwareBuffer::HBL_DISCARD);memcpy(Engine->m_pixelBuffer->getCurrentLock().data, &BMPFileHeader, sizeof(BITMAPFILEHEADER));memcpy((BYTE*)Engine->m_pixelBuffer->getCurrentLock().data + sizeof(BITMAPFILEHEADER), m_pBitMapInfo,sizeof(BITMAPINFO));memcpy((BYTE*)Engine->m_pixelBuffer->getCurrentLock().data + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO), pData, cx*cy*3);//memcpy((BYTE*)Engine->m_pixelBuffer->getCurrentLock().data, pData,  cx * cy * 3/* + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO)*/);
Engine->m_pixelBuffer->unlock();if (m_nFrameNumber == 5){CFile   myfile;myfile.Open( "e:\\hkx.bmp",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);myfile.Write(&BMPFileHeader, sizeof(BITMAPFILEHEADER));myfile.Write(m_pBitMapInfo,sizeof(BITMAPINFO));myfile.Write(pData, cx * cy * 3);myfile.Close();}AVIStreamGetFrameClose(pg);Engine->m_Root->renderOneFrame();}break;

VC++读取AVi视频文件相关推荐

  1. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  2. 录屏程序之屏幕实时录制保存成AVI视频文件

    背景 之前自己在视频教程的时候,就从网上找了个破解版的录屏软件来录制视频.虽然是破解版的,但是破解不完全,因为录制的视频播放到十几分钟之后,就开始显示未注册版本的字样在屏幕中,所以很是碍眼啊. 后来, ...

  3. matlab avi视频文件与mat文件 互相转换

    % 读取avi格式视频,并转换成mat格式: % 彩色图像,三通道单独存储: clc; clear all;obj = VideoReader('E:\示例图像\扭曲帧\1.avi\1.mp4'); ...

  4. 使用matlab来压缩avi视频文件,版本 matlab2014a

    使用matlab来压缩avi视频文件,版本:matlab 2014a. 记录一下自己的工作 fileName = 'input.avi'; %输入的视频文件名 %读取视频函数 obj = VideoR ...

  5. opencv读取avi视频并抽取帧

    opencv读取avi视频并抽取帧 #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace s ...

  6. python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

    Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...

  7. C#中读取流媒体视频文件转H.264具体实现方法

    现在有越来越多的人在使用C#语言做编程,但我发现好像用C#做音视频流媒体开发的比较少.我们的libEasyScreenLive目前支持Windows,Android平台,通过EasyScreenLiv ...

  8. avi视频文件太大怎么变小

    avi视频格式的优点是图像质量好,但是其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一.avi视频文件太大怎么变小?对于我这个日常工作都是和视频打交道的,新媒体人来说曾经是一个难题.但现阶段的全民 ...

  9. java 读取音频/视频 文件时长

    java 读取音频/视频 文件时长 支持mp3,mp4,mov,m4a,wav 格式文件 源码 https://github.com/opensourceteams/java-maven-projec ...

最新文章

  1. linux脚本查看变量类型,Shell变量:Shell变量的定义、删除变量、只读变量、变量类型...
  2. PADS2007中的层类型(plane type) 简介
  3. 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具
  4. floating输入 高阻输入_STM32 GPIO八种输入输出模式
  5. iOS-绘制UIView之drawCGRect
  6. 从AR光学开始,了解AR眼镜
  7. 如何开发一个App(Android)
  8. WIN7下建行捷德U盾支付
  9. 噪声概念:白噪声(n)、粉红噪声(1/f)
  10. IOI2017 Day1 Toy Train 题解
  11. 李彦宏:我不是传奇(网络转载)
  12. chia官方矿池常见问题
  13. 软件工程毕业设计课题(26)基于JAVA毕业设计JAVA家政预约系统毕设作品项目
  14. 面试 java -----Socket编程
  15. Linux下的常用的打包和解压缩命令
  16. php去下划线,html怎么去除字体下划线?去除字体下划线方法
  17. Cppcheck--C/C++代码静态检测工具
  18. 《复杂系统突现论》读后
  19. linux中继器设置密码,无线扩展器管理员密码_初始密码是多少?-192路由网
  20. WordPress安装教程图解

热门文章

  1. leetcode算法题--最长字符串链
  2. atm c语言流程图_c语言ATM机程序
  3. 对接钉钉审批_低代码对接钉钉创建外部联系人
  4. adams齿轮齿条怎么定义接触_在SolidWorks里对标准齿轮、齿条的修改应用
  5. 模型评估——ROC、KS
  6. Using string literals in ref attributes is deprecated
  7. ios 自定义加载动画效果
  8. Python笔记总结(1)
  9. hadoop-16-sqoop导入oracle数据
  10. Web 探索之旅 | 第二部分第一课:客户端语言