QT 屏幕录制

qt6.5.0屏幕录制

记录一下本次开发踩到的坑,qt开发屏幕录制最坑的点是m_screen_caputure->setActive(true);
录制前需要先激活屏幕捕获。不然会直接报找不到编码器的错误。其他废话不多说,直接上代码
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMediaRecorder>
#include <QMediaCaptureSession>
#include <QScreenCapture>
#include <QAudioInput>
#include <QMediaFormat>
#include <QMediaDevices>
#include <QAudioDevice>
#include <QTimer>
#include <QTime>

QT_BEGIN_NAMESPACE
namespace Ui {
   
   
class Widget;
}

QT_END_NAMESPACE

class Widget : public QWidget
{
   
   
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    void initSrceen();//初始化屏幕
    void initAudioDev();//初始化音频设备
    void initVideoCodec();//初始化视频编码格式
    void initAudioCodec();//初始化音频编码格式
    void initFileFormat();//初始化文件格式
    void initQuality();//初始化音视频质量
    void updateStateEnable(bool bl);//更新控件使能

    void showRecordDuration();//显示录制时长
    void showError(QMediaRecorder::Error error, const QString &errorString);//显示错误信息
private slots: 
    void on_btn_start_record_clicked();

    void on_btn_stop_record_clicked();

    void on_btn_pause_record_clicked();

    void on_comboBox_video_encode_format_currentIndexChanged(int index);

    void on_comboBox_audio_encode_format_currentIndexChanged(int index);

    void on_comboBox_file_format_currentIndexChanged(int index);

    void on_comboBox_video_quality_currentIndexChanged(int index);

    void on_comboBox_audio_currentIndexChanged(int index);

    void on_comboBox_screen_currentIndexChanged(int index);

    void on_tbtn_set_dir_clicked();

private:
    Ui::Widget *ui;
    QMediaCaptureSession m_captureSession;
    QMediaRecorder m_recorder;

    QScreenCapture *m_screen_caputure = nullptr;
    QScreen *m_srceen = nullptr;

    QAudioDevice m_dev;
    QAudioInput m_audio;

    QMediaFormat format;

    //屏幕设备列表
    QList<QScreen *> m_screenList;

    //音频设备列表
    QList<QAudioDevice> m_audioInputList;

    QTimer *m_timer;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷久虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值