截图
很菜但努力
C++爱好者,技术控~~~
展开
-
菜鸟学ffmpeg音视频技术之11 mac采集audio
ffmpeg虽然是跨平台库,mac和windows还是有区别的,这里介绍下mac如何打开audo并采集。1.查找解码器_input_fmt = av_find_input_format("avfoundation");2.打开设备 _fmt_ctx = avformat_alloc_context(); ret = avformat_open_input(&_fmt_ctx, device_name.c_str(), _input_fmt, NUL原创 2021-01-08 15:52:17 · 618 阅读 · 1 评论 -
菜鸟学ffmpeg音视频技术之10 mac截图包含鼠标
前面介绍了mac截图和截屏,但是截出来的图片都不包含鼠标。研究发现默认跟window一样,截图都不包含鼠标,如果需要鼠标,需要自己绘制上去。下面介绍如何将鼠标绘制上去1.获取鼠标图像NSImage *overlay = [[[NSCursor arrowCursor] image] copy];2.获取鼠标位置 NSPoint mouseLoc; mouseLoc = [NSEvent mouseLocation]; //get cur int原创 2021-01-08 15:31:34 · 306 阅读 · 1 评论 -
菜鸟学ffmpeg音视频技术之9 mac截取进程图像
前面介绍了mac系统如何截取窗口和屏幕,有时我们可能想截取的是一个进程的图像。我这里采用的方法是:截取进程主窗口的图片,然后将该进程的其他独立窗口截出来,然后绘制在主窗口图片之上。这里跟windows一样,使用GDI截图只能截取直接子窗口的图片,如果子窗口是独立窗口是截不进去的需要绘制。1.获取主窗口图片//mainwindow if( 0 == _main_record_window.Handle) { std::string mainrecordname;原创 2021-01-08 14:26:46 · 231 阅读 · 0 评论 -
菜鸟学ffmpeg音视频技术之8 mac窗口截图
https://blog.csdn.net/xpg4321/article/details/112358449介绍了如何枚举mac系统的窗口。下面介绍如何截取窗口图像。1.获取窗口信息参考前一节介绍的mac枚举窗口函数获取窗口信息。 if(nullptr == _screen_caputre) break; bool b = _screen_caputre->caputreWindow(_record_wind.原创 2021-01-08 14:16:53 · 365 阅读 · 0 评论 -
菜鸟学ffmpeg音视频技术之7 mac枚举窗口
https://blog.csdn.net/xpg4321/article/details/112357480介绍了如何截屏因为录制可能需要录制窗口,这里介绍如何枚举mac屏幕的窗口。1.定义保存窗口信息的结构struct WindowPoint { int x; int y; }; struct MousePoint { WindowPoint Position; WindowPoint HotSpot; }; stru.原创 2021-01-08 14:08:34 · 397 阅读 · 0 评论 -
菜鸟学ffmpeg音视频技术之6 mac截屏
前面介绍了window 使用gdi抓取屏幕的方法,现在介绍mac系统如何进行屏幕抓取,如果您使用的qt框架,当然可以使用qt更加方便。但是qt有一个bug,mac外界扩展屏时,如果扩展屏相对位置是左上,左边,左下截图是异常的。这里介绍使用mac原生api进行截图:1.获取屏幕区域 NSScreen *screen = [[NSScreen screens] objectAtIndex:screenNumber]; CGRect mainRect; mainRect.ori原创 2021-01-08 13:55:00 · 554 阅读 · 0 评论 -
Qt实现截图之三 截图裁剪框实现方案2 绘制方式
前面介绍了一种裁剪框的实现方案详见Qt实现截图之二 ,本节再介绍一种实现方案。分层依旧两层,改变的是裁剪层,差别在于只需要一个裁剪窗口也就是去掉前面的top,right, left,bottom,只留下mid窗体用于高亮显示裁剪区域。布局如下:void MaskFrameBase::setup(){ this->setMouseTracking(true); // this->setObjectName("shtcenterframe"); this-原创 2020-12-25 11:37:16 · 826 阅读 · 0 评论 -
Qt实现截图之二 截图裁剪框实现方案1 窗口组合方式
截图相关介绍参考Qt实现截图之一整个截图分为两层,一层为截图显示区,一层为裁剪选着层,裁剪选择层蒙在截图显示区之上。本节介绍一种方案实现裁剪框。裁剪层分为5个区域,上下左右和中间,分别代表5个QWidget, 中间区域即为需要裁剪的区域-高亮区域,没有截图时此区域不存在。1.布局top, left,right, bottom 是个窗体均设置半透明颜色,mid是全透明效果就是裁剪区域void MaskFrameBase::setup(){ this->set.原创 2020-12-25 11:23:27 · 1390 阅读 · 1 评论 -
Qt实现截图之一 截图
最近项目需要使用qt实现截图功能,再次记录一下,希望对您有所帮助,qt我是用的是5.9.9版本。1.截图qt截图推荐使用QScreen来实现截图,使用grab这种方式只能截窗体且窗体如果是opengl窗体或者视频窗体无法获取数据。1.截主屏幕截主屏幕代码相对简单 QScreen* screen = QApplication::primaryScreen(); QPixmap pixmap = screen->grabWindow(QApplication::deskt原创 2020-12-25 10:53:12 · 4884 阅读 · 0 评论