Qt + FFmpeg 屏幕录制器

一、环境搭建

可以看我的另一篇文章 《Qt + FFmpeg 视频播放器》 , 在这里就不再重复了。
PS:一定要确认好FFmpeg库的版本,我在使用的时候因为函数接口对不上,头发掉了不少…所以,一定要慎重啊!!!

二、实战演练

1 . 功能介绍

源码链接 : https://github.com/AutoCatFuuuu/QT/tree/master/gdigrab

  1. 可以录制屏幕 录制系统摄像头 并显示出来
  2. 保存录制文件
实际效果图

这里展示的是录制桌面后保存下来的小视频【很小很小】

录制桌面

2 . 编码流程图

编码流程图

关键代码 【都是关键 这里对封装的类进行简单说明 程序内也有详细注释】

aencode.h

【AEncode】对编码进行封装
功能说明:

  1. 本demo工程里是实现录取屏幕 视频数据是从gdigrab里抓过来的
  2. 想实现 本地文件视频转码 可以先把视频解码出来再传到encodecOneFrame()

注意:

  1. 成员函数声明顺序就是编码流程的顺序,请一定要按顺序执行,否则程序会崩溃
  2. 本程序目前只支持 单视频流编码
  3. 编码格式会根据输出文件名猜测判断
  4. 对于编码器的参数设置接口并没有写很多 主要是因为对编码器的参数没啥研究…
  5. setPixFormat() 别乱设置 编码器不支持的话,会没法编码的
    默认是 AV_PIX_FMT_YUV420P
  6. setSize() 默认是 w:1920 h:1080
  7. setFPS() 默认 25
#ifndef AENCODE_H
#define AENCODE_H

#ifdef __cplusplus
extern "C"{
   
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/imgutils.h>
}
#endif

class AEncode
{
   
public:
    AEncode();                              //初始化私有成员
    ~AEncode()<
  • 0
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值