qt超易实现录屏程序的方法

QT录屏程序的实现

1 获取桌面的图像
The QApplication::desktop() function is used to get an instance of QDesktopWidget.
// QApplication::desktop()用于获取当前系统的桌面对象.

QScreen *screen = QApplication::primaryScreen(); //获取当前程序的主窗口对象
QPixmap map = screen->grabWindow(QApplication::desktop()->winId()); //调用主窗口对象的捕捉窗口图像,并传递桌面窗口的id号
map.save("/kkk.jpg"); //保存图像

2 把数据编码成jpg, 并存在内存数组里

 QByteArray ba;
 QBuffer    bf(&ba);
 map.save(&bf, "jpg", 30) // 30表示压宿率,值从0 – 100, 值越小表示编码出来的图像文件就越小,当然也就越不清晰

3 再把jpg文件封装成avi文件。 avi文件的封装由avilib.h, avilib.cpp来实现(从luvcview源码里获得)
我们主要使用里面的4个函数:

avi_t* AVI_open_output_file(char * filename); //创建一个操作输出文件的对象

void AVI_set_video(avi_t *AVI, int width, int height, double fps, char *compressor);  //设置视频文件的分辨率, 多少帧一秒, 编码方式

int  AVI_write_frame(avi_t *AVI, char *data, long bytes, int keyframe); //保存一帧图像, keyframe表示是否为关键帧(即是否完整的一帧图像数据, jpg每张都是完整的)

int  AVI_close(avi_t *AVI); //结束保存视频,并会写入文件索引的。

完整工程源码:
http://download.csdn.net/detail/jklinux/9841146

  • 0
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值