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

目录

工具简介

适配初衷

第三方模块适配问题

源码代编译问题

最后完美运行如图


工具简介

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

适配初衷

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

第三方模块适配问题

screenviewer工具在树莓派3B+上的适配_第1张图片

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

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

3.ffmpeg直接源码编译即可,首先源码编译h264,然后编译ffmpeg。可以参考树莓派ffmpeg 编译_CindyWangry的博客-CSDN博客_树莓派编译ffmpegscreenviewer工具在树莓派3B+上的适配_第2张图片

 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截图

screenviewer工具在树莓派3B+上的适配_第3张图片

 直播推流:screenviewer工具在树莓派3B+上的适配_第4张图片

实施摄像头效果图:

screenviewer工具在树莓派3B+上的适配_第5张图片​​​​​​​

补充问题:

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

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

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

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

screenviewer工具在树莓派3B+上的适配_第6张图片

 

你可能感兴趣的:(Opencv,Qt开发,C++,ffmpeg)