当前位置: 首页 > news >正文

QT6 如何在Linux Wayland 桌面系统抓屏和分享屏幕

要在 Linux Wayland 桌面环境下使用 Qt6 实现屏幕抓取和分享,需结合 Qt 原生支持与系统级工具(如 PipeWire、XDG Desktop Portal)。以下是具体方案和技术要点:

Qt6 原生屏幕捕获(QScreenCapture)

适用场景:需在 Qt 应用程序中直接集成屏幕捕获功能。
核心依赖

  • PipeWire(≥0.3)提供底层多媒体框架24;

  • XDG Desktop Portal 及其后端(如 xdg-desktop-portal-wlr)处理权限和屏幕选择

    安装依赖

  • sudo apt install xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr pipewire wireplumber

  • 代码实现

  • 使用 QScreenCapture 类激活捕获会话,Wayland 下无法直接通过 API 选择屏幕,需依赖 Portal 弹窗交互

  • #include <QMediaCaptureSession>
    #include <QScreenCapture>
    #include <QVideoWidget>

    QMediaCaptureSession session;
    QScreenCapture screenCapture;
    QVideoWidget preview;

    // 设置捕获目标(Wayland 下需忽略 setScreen())
    session.setScreenCapture(&screenCapture);
    session.setVideoOutput(&preview);
    screenCapture.setActive(true);  // 触发 Portal 屏幕选择向导

  • 限制与注意事项

  • 屏幕选择:调用 setActive(true) 时,系统会弹出交互式窗口要求用户选择屏幕或区域

  • 仅支持 FFmpeg 后端:需确保 Qt 编译时启用了 FFmpeg4;

  • 实验性功能:Qt 6.5+ 支持 Wayland 捕获,但稳定性可能不足

相关阅读:

神旗视讯 -- 高性能的私有化音视频系统

神旗视讯: 从零搭建高性能信创会议系统

神旗视讯开源地址:

国内: https://gitee.com/sqmeeting

国外: https://github.com/sqmeeting

http://www.lryc.cn/news/618674.html

相关文章:

  • 使用Excel制作甘特图
  • 将黑客拒之物联网网络之外的竞赛
  • 5G毫米波现状概述(截止2025 年7月)
  • ROS教育中自动驾驶机器人的技术融合与技术创新
  • 门店销售机器人的认知革命:当传统机械邂逅Deepoc具身智能
  • CVPR 2025丨机器人如何做看懂世界
  • 开疆智能Ethernet转ModbusTCP网关连接发那科机器人与三菱PLC配置案例
  • RoboNeo美图AI助手
  • 如何区分类的关系是关联和聚合?
  • Java工厂模式
  • 【图像算法 - 13】基于 YOLO12 与 OpenCV 的实时目标点击跟踪系统(系统介绍 + 源码详细)
  • mysql 简单操作手册
  • springboot+JPA
  • Socket 套接字常用方法
  • 知名车企门户漏洞或致攻击者远程解锁汽车并窃取数据
  • 外卖投诉:差评转复购的3步攻略
  • 腾讯云terraform学习教程
  • 终端互动媒体业务VS终端小艺业务
  • JAVA高级第十章 XML
  • 本地部署开源媒体中心软件 Kodi 并实现外部访问( Windows 版本)
  • UE5.3 C++ 动态多播实战总结
  • Mac M1探索AnythingLLM+Ollama+知识库问答
  • Flink Python API 提交 Socket 数据源的 WordCount 作业
  • 多轮问答与指代消解
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)
  • 6深度学习Pytorch-神经网络--过拟合欠拟合问题解决(Dropout、正则化、早停法、数据增强)、批量标准化
  • 企业高性能web服务器(4)
  • 企业AI人工智能培训基础实战
  • 电子电路原理学习笔记---第5章特殊用途二极管---第2天
  • PaddlePaddle 模型训练技巧