AVI 视频文件的播放
来源:互联网 发布:贵阳 软件著作权资助 编辑:程序博客网 时间:2024/05/01 13:47
项目组最近需要我开发写一个播放器程序,到今天这个工作基本上完成了,在开发过程中,需要让播放器支持AVI视频文件。对于AVI文件的操作之前接触较少,经过这些天的摸索,终于有了一些自己的看法。 AVI(Audio Video Interleaved)是将语音和影像同步组合在一起的文件格式。它对视频文件采用了一种有损压缩方式,但压缩比较高,尽管画面质量不是太好,但其应用范围仍然非常广泛。 ///////////////////////////////////////结构说明////////////////////////////////// PAVIFILE pfile; AVIFILEINFO *pfi; // avi信息 AVISTREAMINFO psi; // 包含流信息的结构体的指针 PAVISTREAM pavi; // avi文件流句柄 PGETFRAME pFrame ; // GetFrame对象的指针 BITMAPINFOHEADER bmih; // 头信息 For DrawDibDraw //////////////////////////////////////////////////////////////////////////////////// 对于AVI视频文件的播放,主要有以下的步骤: 1: 调用AVIFileInit(),初始化AVI文件库 2: CoInitialize(NULL); // 根据lpszPathName以只读的方式打开AVI文件 if (0 != AVIFileOpen(&pfile,lpszPathName,OF_READ,NULL)) { AfxMessageBox(_T("Failed to open AVI File!")); return; } // 获取AVI文件信息 if (0 != AVIFileInfo(pfile,pfi,sizeof(AVIFILEINFO))) { AfxMessageBox(_T("Failed to get FileInformatin !")); return; } // 获取AVI文件中的视频流 if (0 != AVIFileGetStream(pfile, &pavi, streamtypeVIDEO,0)) { AfxMessageBox(_T("Failed to get FileStreamInformation !")); return; } // 视频流信息 AVISTREAMINFO psi; AVIStreamInfo(pavi,&psi,sizeof(AVISTREAMINFO)); 3: // AVIStreamGetFrameOpen()后需要调用GetFrameClose() pFrame = AVIStreamGetFrameOpen(m_aviFlie.pavi, &m_videoBitmapInfo); if (NULL == pFrame) { .... } else { .... } 4: // 存位图的头信息 LPBITMAPINFOHEADER lpbi; // 从AVI流中得到数据 lpbi = (LPBITMAPINFOHEADER)AVIStreamGetFrame(pFrame, m_videoCurFrame); // 数据指针,由AVIStreamGetFrame返回(跳过头信息和色彩信息) pbDecodedData =(BYTE *)lpbi+lpbi->biSize+lpbi->biClrUsed * sizeof(RGBQUAD); (注:这个地方让我苦恼 了很久啊~~~~) // 利用数据进行显示 SetStretchBltMode(memDC.m_hDC,COLORONCOLOR); StretchDIBits( memDC.m_hDC, rect.left, rect.top, rect.Width(), rect.Height(), 0, 0, m_videoBitmapInfo.biWidth, m_videoBitmapInfo.biHeight, pbDecodedData, (CONST BITMAPINFO *)pBitmap, DIB_RGB_COLORS, SRCCOPY ); 5: AVIFileRelease(pfile); // close file AVIFileExit(); // releases AVIFile library
- AVI 视频文件的播放
- html中播放avi格式的视频文件
- 用MCIWnd播放AVI等视频文件
- opencv实现播放视频文件(AVI) 并设置播放的进度条
- Win7codecs解码包实现.avi等视频文件播放
- 用于物体追踪的.avi视频文件
- 音视频文件的播放
- OpenCV写入AVI视频文件
- AVI视频文件格式
- 基于OpenCV的AVI视频文件读取及运动检测
- 基于OpenCV+MFC的AVI视频文件读取及运动检测
- 20160131AVI视频文件增加音量的步骤MKV(草稿)
- Windows Media Player播放AVI视频文件时,只有声音,没有图像,问题解决
- 獲取avi文件的信息,播放avi視頻
- 播放视频文件
- 解决AVI不能播放的问题。
- 使用Mplayer播放avi文件的方法
- 用vfw播放xvid的avi文件
- 文件相互依赖关系
- CSS 负margin 以及 -100%的理解和3列式左右排版理解
- CListCtrl删除选中行
- U-boot移植--8步
- 2440原理图地址线分析
- AVI 视频文件的播放
- ASP.NET中的n种路径
- 使用WDDX和Coldfusion
- Ubuntu 完全卸载Firefox 的办法
- JAVA中Stack和Heap的区别
- SQL server阻塞(来自微软技术支持人员)
- Java技术回顾:JNDI应用实例
- QPainterPathStroker的基本使用
- U-boot命令的添加