码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt/C++音视频开发52-采集本地屏幕桌面的终极设计


    一、前言

    最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRect(0,0 1920x1030), QRect(1920,-208 2560x1390),可以看到有个负数值(可以在操作系统中的排列显示器拖动调整),而且如果屏幕左右的顺序调换下,比如2K的分辨率在前面,打印的屏幕区域是 QRect(0,0 1920x1030), QRect(-2560,-185 2560x1390),可以看到2K的这个屏幕XY坐标都是负数,你以为这就是所有的情况了吗?那就想错了,还有可能是上下屏幕排列的,2K屏幕在下面打印区域 QRect(0,0 1920x1030), QRect(-639,1080 2560x1390),2K屏幕在上面打印区域是 QRect(0,0 1920x1030), QRect(-270,-1440 2560x1390),这还支持两个屏幕的情况,如果是4个或者更多呢,如果要用户获取到对应屏幕的区域然后填入桌面录制参数中,无异于难于上青天,这肯定是不可能的事情,而ffmpeg默认的参数就是要传入真实的偏移值坐标和分辨率,而用户呢又习惯于在哪个屏幕打开的程序就以当前屏幕的分辨率为基准,偏移值以左上角(0, 0)为基准,所以约定用户只需要填入分辨率和相对偏移值就行,不填入就以当前屏幕整体分辨率为准,这就需要搞一个专门的转换函数,专门获取当前屏幕区域并计算各种情况。

    经过上面大费周折的计算,以为可以关机回家吃饭加鸡腿了,又想多了,用户可能输入了超过当前分辨率的区域,或者偏移值加上采

  • 相关阅读:
    【OS】操作系统课程笔记 第五章 并发性——互斥、同步和通信
    嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)
    深度学习(PyTorch)——Dataset&DataLoader 加载数据集
    电容式触摸按键功能的实现
    区块链实训教程(6)--开发、编译、部署、调用HelloWorld合约
    Docker技术在测试中的应用--环境搭建篇
    Spring 手把手入门实例
    vue-router的使用
    openGauss学习笔记-78 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT关键技术
    如何拿捏个人电脑
  • 原文地址:https://blog.csdn.net/feiyangqingyun/article/details/132823102
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号