• vc++ 2008 如何使用quartz.dll 获取影片的帧


    先在VC++2008 中引用quartz.dll,路径:C:\Windows\System32\quartz.dll

    编码如下:

    private:System::Void MediaPic()
        {
         //初始化 FilgraphManagerClass 类的新实例
         QuartzTypeLib::FilgraphManagerClass^ FMC=gcnew QuartzTypeLib::FilgraphManagerClass();
         //载入视频文件
         FMC->RenderFile("C:\\F.rmvb");
         //定位当前流
         FMC->CurrentPosition=FMC->Duration/4;
         //获取源影片的宽度
         int width=FMC->SourceWidth;
         //获取源影片的高度
         int height=FMC->SourceHeight;
         //定义所需的内存中的字节数
         //BITMAPINFOHEADER.biSize + 4 * BITMAPINFOHEADER.biWidth * BITMAPINFOHEADER.biHeight
         int% pBufferSize=40+4*width*height;
         //将 FilgraphManager 转换成 IBasicVideo2.cs 文件中定义的 IBasicVideo2 接口
         QuartzTypeLib::IBasicVideo2^ video=(QuartzTypeLib::IBasicVideo2^)FMC;
         //从进程的非托管内存中分配内存
         IntPtr pDIBImage=System::Runtime::InteropServices::Marshal::AllocHGlobal(pBufferSize);
         //获取新分配的内存的 IntPtr
         //video->GetCurrentImage(pBufferSize,(int%)((int)pDIBImage));//无法执行....不清楚为什么,知道的可以给我回复一下。谢谢!
         //相邻扫描行开始处之间字节偏移量
         int stride=-4*width;
         //颜色数据的格式
         Imaging::PixelFormat format=Imaging::PixelFormat::Format32bppRgb;
         //包含像素数据的字节数组的指针
         IntPtr scan0=(IntPtr)(((int)pDIBImage)+(pBufferSize-(4*width)));
         //用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例
         Bitmap bmp=gcnew Bitmap(width,height,stride,format,scan0);
         //将图像保存到指定的文件。
         bmp.Save("c:\\a.jpg",System::Drawing::Imaging::ImageFormat::Jpeg);
         //释放以前使用 AllocHGlobal 从进程的非托管内存中分配的内存
         System::Runtime::InteropServices::Marshal::FreeHGlobal(pDIBImage);
         //释放运行时可调用包装及原始 COM 对象
         while(System::Runtime::InteropServices::Marshal::ReleaseComObject(FMC)>0);
        }

  • 相关阅读:
    selenium===介绍
    工具安装===Sublime Text-安装
    Django===django工作流
    python基础=== itertools介绍(转载)
    python基础===如何优雅的写代码(转自网络)
    python基础===一道小学奥数题的解法
    python基础===列表类型的所有方法
    python基础===通过菲波那契数列,理解函数
    python基础===字符串切片
    安全测试===BurpSuite使用教程-附安装包
  • 原文地址:https://www.cnblogs.com/magic_evan/p/1846137.html
Copyright © 2020-2023  润新知