65.9K
CodeProject 正在变化。 阅读更多。
Home

Easy AVI

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.82/5 (11投票s)

2012年11月24日

CPOL
viewsIcon

38273

downloadIcon

1916

一个用于创建 AVI 文件的类。

引言

本文介绍了一个封装 AVI 文件创建的类。同时,也提供了一个小示例,演示如何使用它以 15 FPS 的帧率录制桌面。目前它不支持音频。

使用代码

AVI 对象非常精简且易于使用。一个限制是所有帧必须具有相同的大小,并且调色板不能更改。示例代码使用 32 位 BPP DIB 部分录制桌面,因此满足了这些要求。

AVI 类

class CAVI
{
public:
    CAVI();
    ~CAVI();
    BOOL Open(DWORD FPS = 30);
    CString Close();
    BOOL AddFrame(CDIBFrame & DIBFrame);
    BOOL IsOpen() const {return m_bOpen;}

protected:
    void Init();
    void Term();
    BOOL CreateStream(CDIBFrame & DIBFrame);
    void ReleaseStream();

protected:
    BOOL m_bInit,m_bOpen,m_bStream;
    CString m_csFileName;
    DWORD m_dwFPS,m_dwFrame;
    PAVIFILE m_pAVIFile;
    PAVISTREAM m_pAVIStream,m_pAVICompressedStream;
};

通过声明一个 CAVI 对象来实例化该类。

CAVI Avi;

通过打开它并设置所需的 FPS 来准备录制。

Avi.Open(15);

通过使用接受来自 DIB 部分创建的位图的 AddFrame 添加帧。

Avi.AddFrame(DIB);

通过调用 Close 结束录制。 这将返回临时 AVI 文件在用户temp目录中的位置。

CString csFile = Avi.Close();

历史

  • 2012/11/23 - 文章提交。
© . All rights reserved.