screenviewer工具在树莓派3B+上的适配

工具简介

屏幕截图web端展示功能、视频设备如摄像头、视频流等接入,并可web端展示。

适配初衷

这样的工具如果能完美运行在嵌入式linux上是极好的,目前仅适配了windows,所以决定适配下树莓派。

第三方模块适配问题

需要适配的第三方库

1.qwebapp比较简单,直接qmake编译就可生成;

2.opencv440比较费劲,这里选择了捷径,使用了网络上编译好的410动态库,参考(1条消息) 树莓派编译opencv4_Hello_wshuo的博客-CSDN博客_树莓派 opencv编译时 设置虚拟内存;

3.ffmpeg直接源码编译即可,首先源码编译h264,然后编译ffmpeg。可以参考树莓派ffmpeg 编译_CindyWangry的博客-CSDN博客_树莓派编译ffmpeg

安装h264及ffmpeg

configure的时候可能会报mmal的问题,直接将--enable-mmal去掉即可。

源码代编译问题

1.screen()->geometry()有问题,换成qApp->primaryScreen()->geometry()即可。

编译完成后运行./screenviewer:

2.动态库找不见:libmmal_core.so。

解决:全局搜索,发现该库在/opt/vc/lib下,于是将/opt/vc/lib放在/etc/ld.so.conf中并sudo ldconfig使其生效。

3.opencv依赖libjasper提示没找到。

执行以下命令即可解决:

sudo apt install libjasper1 libjasper-dev

4.因为使用到了qmultimedia与qwebsocket,而树莓派安装qt时默认没有安装这些库,所以手动安装:

sudo apt-get install libqt5multimedia5 libqt5multimedia5-plugins

sudo apt-get install libqt5websockets5-dev

最后完美运行

web截图

实时摄像头效果图:

补充问题:

1.实际在树莓派上运行时,发现只能捕获到一帧图像,最终查阅相关资料发现是子线程中waitKey阻塞住了,于是乎屏蔽。

2.推流到node-media-server时报错:Application provided invalid, non monotonically increasing dts to muxer in stream 0。

原因:在读取每一帧的时候,可能会发生dts 计算错误,记录上一帧的dts,和当前帧比较,当前帧是增长的就是正确的,小于上一帧意味着出现错误,continue下一帧。

解决:出现下一帧小于上一帧直接跳过,代码如下图:

3.QAction的图标显示不出来:

原因:可能相关权限存在问题。

解决:使用sudo执行程序,所有问题迎刃而解:

展开阅读全文

页面更新:2024-04-21

标签:会报   工具   截图   源码   摄像头   原因   完美   发现   动态   博客

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top