diff --git a/docs/bigscreen/index.html b/docs/bigscreen/index.html index b2b0ae9..040eea5 100644 --- a/docs/bigscreen/index.html +++ b/docs/bigscreen/index.html @@ -671,7 +671,7 @@ header, .context-menu, .megamenu-content, footer{ -
V20220417
V20211015
V20210323
系统支持多种数据源,比如数据库采集、http请求、串口通信、网络通信、模拟数据等,为了简化测试过程,默认内置采用的是模拟数据。
系统内置了多种启动窗体,默认大屏系统,可以通过鼠标右键菜单进入系统设置,启动窗体下拉框选择进行切换,切换后会自动重启应用,还可选择控件演示、模块演示,在控件演示和模块演示窗体中,左侧是对应子窗体导航,会自动记住最后选中的子界面索引。 diff --git a/docs/iotsystem/index.html b/docs/iotsystem/index.html index a147447..e47a5c3 100644 --- a/docs/iotsystem/index.html +++ b/docs/iotsystem/index.html @@ -671,10 +671,10 @@ header, .context-menu, .megamenu-content, footer{ -
V20220522
V20220508
V20220428
V20190712
V20190624
+
V20220522
V20220508
V20220428
V20190712
V20190624
系统启动后,首先会弹出用户登录界面,从用户姓名的下拉框选择用户名,然后输入密码(默认用户名密码都是admin),单击登录按钮,密码正确则会进入到系统主界面,错误会弹出提示,错误超过三次自动关闭,需要重新打开软件。
在登录界面可以勾选是否记住密码,是否自动登录,如果勾选了记住密码,则下次启用软件会自动填入最后用户的密码,勾选了自动登录(以最后的用户信息作为当前登录用户)则启动后直接进入主界面。如果开启了自动登录,不会弹出登录界面,可以在系统设置中关闭自动登录和记住密码。
在主界面单击右上角的关闭按钮,会弹出用户退出界面,需要输入密码验证防止误关闭,会自动填入登录的用户名,密码输入正确才会退出软件。用户登录和退出都内置了超级密码a防止管理员忘记密码。
基本设置中有部分参数的切换会自动重启应用。
参数说明
工作模式
参数说明
其他说明
x1//数据库类型枚举
2enum DbType {
3 DbType_ODBC = 0, //odbc数据源
4 DbType_Sqlite = 1, //sqlite数据库
5 DbType_MySql = 2, //mysql数据库
6 DbType_PostgreSQL = 3, //postgresql数据库
7 DbType_SqlServer = 4, //sqlserver数据库
8 DbType_Oracle = 5, //oracle数据库
9 DbType_KingBase = 6, //人大金仓数据库
10 DbType_Other = 255 //其他数据库
11};
12
13//自动切换默认数据库端口
14void DbHelper::getDbDefaultInfo(const QString &dbType, QString &hostPort,
15 QString &userName, QString &userPwd)
16{
17 if (dbType == "MYSQL") {
18 hostPort = "3306";
19 userName = "root";
20 userPwd = "root";
21 } else if (dbType == "SQLSERVER") {
22 hostPort = "1433";
23 userName = "sa";
24 userPwd = "123456";
25 } else if (dbType == "POSTGRESQL") {
26 hostPort = "5432";
27 userName = "postgres";
28 userPwd = "123456";
29 } else if (dbType == "ORACLE") {
30 hostPort = "1521";
31 userName = "system";
32 userPwd = "123456";
33 } else if (dbType == "KINGBASE") {
34 hostPort = "54321";
35 userName = "SYSTEM";
36 userPwd = "123456";
37 }
38}
参数说明
参数说明
网络转发的功能,是用来将本地的采集的所有设备的数据,通过UDP协议转发到指定的IP和端口,对方只要开启网络接收即可查看到设备的实时运行数据。网络转发和网络接收不能同时开启,本地负责采集的软件开启网络转发,远程需要查看数据的电脑开启网络接收,转发的端口和接收的端口必须保持一致,支持多个IP,中间用英文的分号 ; 隔开。单击同步数据的按钮会将本地的端口+设备+节点信息传送到接收端,不需要手动设置。这样就保证了本地的信息和远程的信息完全一致。远程的IP必须保证可达,比如ping的通。
参数说明
当探测器发生报警后,如果开启了短信告警,会将报警信息以短信的形式发送到预先设定的接收者的手机号码上,短信内容格式为:位号: AT400001 控制器: 控制器A 探测器: 探测器A 触发值: 70.8 PPM 类型: 浓度上限报警 时间: 2019-01-05 12:12:12。需要本地发短信的硬件支持。
参数说明
当探测器发生报警后,如果开启了邮件转发告警,会将报警信息以邮件的形式发送到预先设定的接收者的邮箱中,邮件内容格式为:位号: AT400001 控制器: 控制器A 探测器: 探测器A 触发值: 70.8 PPM 类型: 浓度上限报警 时间: 2019-01-05 12:12:12。后期会将警情统计的报表数据以excel表格的形式发送到接收者邮箱。如果发现邮箱登录失败等,请先在邮箱后台设置开启smtp和pop3。
参数说明
用来设置本地电脑的系统时间,为什么需要这个设置,因为软件很可能在嵌入式linux上运行,需要手动设置时间。
参数说明
参数说明
本系统支持串口接入和网络接入两种方式,对应的端口需要提前设置,后期可能还会新增mqtt等方式,选择不同的协议类型即可。
字段说明
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个端口信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
字段说明
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个控制器信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
字段说明
报警类型
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个探测器信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
在报警联动设置中,可以设置每个位号报警后,对应的继电器联动,支持探测器串口和新独立的串口(如果是和探测器并用的串口则不会重新打开串口,直接用原有的串口发数据联动,如果是新的串口则会重新打开串口),模块地址为继电器板子的地址,联动地址集合为需要联动报警的位,支持多个,多对多关系,一个探测器报警可以联动多个联动模块上的多个继电器地址,中间丨杠隔开。
字段说明
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个联动信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
参数说明
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个类型信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
用户管理是后面增加的一个模块,用于设置不同的用户不同的类型+权限,可以细分到每个模块的权限,勾选表示具有该权限,内置了7种权限选择,后期还可以在此基础上增加其他权限等。
单击添加按钮,会自动规则生成默认的信息,直接表格中修改即可,修改好以后单击保存按钮保存所有的信息。
如果要删除某个用户信息,需要先选中该行,然后单击删除按钮,删除后会自动保存。不允许删除内置的admin用户。
单击清空按钮会对整个表进行清空操作,清空后数据不能恢复,慎用。
单击导入按钮,可以选择之前导出的csv格式的文件导入数据。
单击导出按钮,将表格数据导出到csv格式的文件,用户可以打开文件编辑,然后再次导入,这样可以作为简易的备份机制使用,也可将繁琐的基础数据录入交给小姑娘去做。
单击打印按钮可以将表格中的内容打印出来,打印前会弹出打印预览界面,可以自行做边距的调整等,可以查看等待打印的内容,翻页切换。
单击导出按钮可以将表格中的内容导出到excel表格,独创的excel导出数据算法,极速导出,支持任意系统,无依赖。
假设设置了用户没有系统设置和删除记录的权限,则关闭系统的时候会弹出错误信息提示当前用户没有权限。
在地图管理中,可以导入和删除地图。
位置调整中,可以拖动探测器到正确的位置,右侧单击地图切换可以看到对应的该地图对应的探测器,全部位置调整好之后,单击右下角保存按钮即可,会立即应用。
组态设计模块中提供的是简单的示例,演示如何加载自定义控件动态库、将控件拖曳到背景地图上,配置好对应控件的属性,可定义用户属性,可导出控件的配置信息到xml文件,并支持导入xml文件自动加载上次保存的控件配置信息。目前是一个简单的组态雏形,等后期架构好如何应用再重写整个模块。
本系统默认不包括里面控件的源码,提供动态库的形式使用,如果还想学习自定义控件大全的源码(目前共202个控件卖700元),需要额外单独购买。
可以自行选择通讯端口+设备名称进行数据的过滤,可查看所有的通信数据。不同收发数据不同颜色,还可以指定关键字过滤数据,每个收发数据都有对应的中文解释。能够很方便的对运行中的系统查看设备数据,规避是下位机还是上位机问题扯皮的事情。
设备监控界面主要包括4个模块,分别是数据监控、设备面板、地图监控、曲线监控,设备的实时数据可以同时反应到四个模块上面,相当于以4种不同的表现形式展现采集到的数据。
模式说明
本页面会是使用频率最高的页面,默认就是停留在本页面实时查看所有探测器的数据。左侧为警情信息栏,分别显示时间、位号、报警值。如果有探测器报警,则消息自动追加到最前面。 diff --git a/docs/video_system/index.html b/docs/video_system/index.html index 449a032..cad8f99 100644 --- a/docs/video_system/index.html +++ b/docs/video_system/index.html @@ -671,14 +671,14 @@ header, .context-menu, .megamenu-content, footer{ -
使用说明
写法举例
万能办法,用谷歌或者谷歌内核的浏览器,打开时光网http://www.mtime.com/ ,随便打开个视频,这里一般是预告片,按F12切换到审查元素,顶部切换到网络,选中媒体,刷新网页,按照尺寸排列,最大的那个MP4文件就是,鼠标右键复制地址,这个地址就是完整的网络地址。
V20220515
V20220413
V20220106
V20211220
V20211205
x1void QUIStyle::getStyle(QStringList &styleNames, QStringList &styleFiles)
2{
3 static QStringList names;
4 if (names.count() == 0) {
5 names << "黑蓝色" << "软件黑" << "视频黑";
6 names << "深黑色" << "深蓝色" << "深灰色";
7 names << "扁平黑" << "扁平蓝" << "扁平灰";
8 names << "浅黑色" << "浅蓝色" << "浅灰色";
9 names << "普通黑" << "普通蓝" << "普通灰";
10 names << "大蓝色" << "大紫色" << "大银色";
11 }
12
+https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA 提取码: ujm7。- 如果是64位的qt则对应的dll时候拷贝dll_ffmpeg4_64目录下的。
- 如果使用的ffmpeg3则对应dll目录就是dll_ffmpeg,在ffmpeg.pri文件中可以看到具体启用的是ffmpeg3(支持XP)还是ffmpeg4(不支持XP),默认是ffmpeg4。
- 如果编译运行提示miniblink文件不存在请先拷贝,则说明你当前用的Qt版本没有浏览器模块,要么没安装,要么不支持,你也不用担心啥,此时自动切换用的miniblink浏览器内核,你还需要将ffmpeg库下载的网盘的地方找到dll_miniblink.zip下载解压到可执行文件同一目录即可。
- 系统中所有的图标,都采用的图形字体,对照表在doc目录下的FontAwesome.png、FontAliBaBa.png,对应图形字体类IconHelper中加载的图形字体,后期如果还有增加的其他图形字体也是放在这里,一个类支持多种图形字体,通过不同的值范围自动设置。
- 如果发现地图打不开或者提示秘钥文件丢失,请先确认file目录下的所有文件有没有拷贝过去。
- 如果是用vs+qt可能报错 error LNK2026,解决办法详细见文档中其他说明。
- 默认用户名admin 密码admin。
- 系统配置参数在加载的时候会对节点值进行过滤判断,如果为空会自动用初始值生成新的配置文件,如果不想要显示版权所有公司,可以填xxx而不是删掉整个值。
- 如果是用vlc推流的rtsp地址,比如 rtsp://:8554/aabb,由于vlc推流默认写死的采用的udp协议,所以监控系统也必须在系统设置中通信方式选择udp才行(默认tcp)。
0.6.3 离线地图
- 离线地图可以用网上的瓦片地图下载器下载百度的离线地图放到对应目录即可。
- 也可以直接下载网盘中已经下载好的上海市的离线地图。
- 下载地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名称:bin_map_tiles.tar.xz
使用说明
- 将压缩包下的两个文件夹复制到对应可执行文件下的config文件夹下,和map.js文件同一级目录。
- tiles文件夹是街道图,tiles_hybrid文件夹是卫星图,tiles_self是路网图,路网图和卫星图合并就是混合图。
- 默认提供的是上海市徐汇区的瓦片地图,如果自己用万能地图下载器下载的百度地图的瓦片文件,也可以对应替换就行。
- 要注意的是格式,默认是jpg,如果下载的瓦片地图格式是png则需要打开config文件夹下的map_load.js文件,将.jpg改成.png保存即可。
0.7 视频格式
0.7.1 USB摄像头
- 内核ffmpeg写法:video=USB2.0 PC CAMERA(具体要看设备名)。
- 内核vlc写法:dshow://:dshow-vdev=Default (或者填USB2.0 PC CAMERA)
- 带参数写法:2020-12-12以后增加USB摄像头直接url带分辨率帧率写法,默认分辨率640x480。
写法举例
- video=USB2.0 PC CAMERA|1920x1080|30(表示1920*1080分辨率30帧)
- video=USB2.0 PC CAMERA|640x480(表示640*480分辨率)
- dshow://:dshow-vdev=USB2.0 PC CAMERA(表示打开视频设备USB2.0 PC CAMERA、其他参数全部默认)
- dshow://:dshow-vdev=USB2.0 PC CAMERA:dshow-adev=麦克风 (USB Audio Device):dshow-size=1920*1080:live-caching=300(表示打开视频设备USB2.0 PC CAMERA、打开音频设备麦克风 (USB Audio Device)、分辨率640x480、缓存时间300毫秒)
0.7.2 网络地址
- 下面的地址有时候会失效,可以自行网上找找其他的地址,网络视频地址建议在晚上测试会更流畅。
- 大雄兔:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
- 大雄兔:http://r.ossrs.net/live/bbb.flv
- 海康萤石:https://hls01open.ys7.com/openlive/6e0b2be040a943489ef0b9bb344b96b8.hd.m3u8
- 在线摄像机:http://vts.simba-cn.com:280/gb28181/21100000001320000002.m3u8
- 摄像机格式:https://blog.csdn.net/qq_38880380/article/details/80652697
0.7.3 中央卫视
- 中央卫视1:rtmp://58.200.131.2:1935/livetv/cctv1
- 中央卫视2:rtmp://58.200.131.2:1935/livetv/cctv2
- 中央卫视3:rtmp://58.200.131.2:1935/livetv/cctv3
- 中央卫视4:rtmp://58.200.131.2:1935/livetv/cctv4
- 中央卫视5:rtmp://58.200.131.2:1935/livetv/cctv5
- 中央卫视6:rtmp://58.200.131.2:1935/livetv/cctv6
- 中央卫视7:rtmp://58.200.131.2:1935/livetv/cctv7
- 中央卫视8:rtmp://58.200.131.2:1935/livetv/cctv8
- 中央卫视9:rtmp://58.200.131.2:1935/livetv/cctv9
- 中央卫视10:rtmp://58.200.131.2:1935/livetv/cctv10
0.7.4 视频文件
万能办法,用谷歌或者谷歌内核的浏览器,打开时光网http://www.mtime.com/ ,随便打开个视频,这里一般是预告片,按F12切换到审查元素,顶部切换到网络,选中媒体,刷新网页,按照尺寸排列,最大的那个MP4文件就是,鼠标右键复制地址,这个地址就是完整的网络地址。
- http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
- http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4
- http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
- http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4
0.7.5 网友提供
- rtmp://live.yihtc.com:10935/hls/stream_3
- rtmp://live.yihtc.com:10935/hls/stream_13
- rtmp://218.3.205.46/live/ggpd_sd
- rtmp://hls.hsrtv.cn/hls/hstv2
- rtmp://hls.hsrtv.cn/hls/hstv1
- rtmp://222.173.22.119:1935/live/jnyd_sd
- rtmp://222.173.22.119:1935/live/xwhd_hd
- rtmp://livetv.dhtv.cn:1935/live/peoples
- rtmp://livetv.dhtv.cn:1935/live/citylife
- rtmp://livetv.dhtv.cn:1935/live/financial
- rtmp://livetv.dhtv.cn:1935/live/news
0.8 版本说明
0.8.1 精益求精
0.8.2 破茧成蝶
- 考虑增加mediaplayer内核,限定Qt5.有些嵌入式板子支持mediaplay硬解码。
- 考虑提取抽象视频控件类,可以将vlc、ffmpeg、mpv、海康等视频类移除大量重复代码。
V20220515
- 将用户退出中的退出系统权限验证去掉,理论上对退出系统这个限制没啥意义,还可以通过任务管理器强制关闭进程。
- 将退出系统的权限名称改成调整布局,没有调整布局权限则不能调整拖动停靠窗体位置等。
- 视频面板窗体对象指针放到了全局静态变量,这样很多地方可以直接使用,比如声音控制、布局调整、视频轮询等。这样就不用繁琐的信号槽切换,可以省略很多不必要的代码,性能更高。
- 修复静音状态下调整音量可能不正确的BUG,静音状态下只改变音量值变量而不是正常改变音量。
- 实现右下角音量面板静音切换、音量值调整,全局视频控件应用。
- 改进默认地图算法,取第一个有背景地图的设备的图片作为默认图片,可能默认图片不存在则取图片列表中的第一张。
- 修复ffmpeg内核回调模式自动重连崩溃的BUG,此时图片不存在应该置为空。
- 增加识别秘钥有限制后限定标题栏带试用字样。
- 重写通用的视频地址类videourl,将通道改成0开始,分隔符改成英文逗号,视频地址集合通过指定枚举值选择不同类型添加。
- 增加自动插入临时消息到数据库用户操作记录,增加参数控制是否需要显示临时消息的时候插入。
- 修复qss中分组框QGroupBox标题位移的BUG,在linux系统表现不统一。
V20220413
- 修复视频控件设置自定义背景颜色的时候,没有考虑边框的范围问题。
- 选项卡样式去掉悬停样式,经过观察对比Qt自带的样式都是没有悬停样式,直接是选中样式。
- 修复自定义委托复选框不居中的问题,之前计算不准确会有细微偏差。
- 自定义委托增加悬停颜色。
- 重写自定义委托禁用列,支持文字颜色、背景颜色、字体等特性。
- 修复用户登录、用户退出界面标题栏字体被放大的BUG,因为样式冲突了。
- 将NvrInfo和IpcInfo中的地址字段改名为mark备注字段,涵盖内容更广。
- 地图模块默认卫星图增加了叠加层,更符合实际需求,对应地图综合应用示例做了极大升级改善,比如下载离线地图改成了最新的地址,可以下载到和在线地图一样的瓦片图片文件,离线地图下载改成了多线程,速度提升10倍以上。
- 自定义委托增加quistyle标记,有该标记则自动代码内部引用换肤全局颜色变量,这样删除了大量的设置自定义委托背景颜色的代码。
- 修复Qt6中msvc编译器下,强制指定miniblink浏览器内核的时候编译通不过的BUG,其实这个操作有点吃饱了撑着,因为msvc下有webengine浏览器内核。但是就是因为有极个别人有这个需求,客户就是上帝。
- 增加用户管理权限。
- 将用户权限和用户信息相关类合并到通用的类userhelper中,做成通用的权限组件。
- 修复Qt6中自定义复选框委托,在设置了全局样式的情况下,会不断切换选中的BUG。
- 效果图重新截图,用最新的运行界面。
- 组件示例增加4通道视频同时播放,进度条控制。
V20220106
- 彻底修复全屏模式+webengine同时存在的情况下鼠标右键菜单无法弹出以及视频可能黑屏的BUG,这是Qt的BUG。
- 同时测试多屏幕下正常状态和全屏状态的情况,多屏幕不同分辨率。
- 增加其他设置界面,将串口设置、网络设置等移动到其他设置。随着功能越来越多,也很有必要单独拆分设置。
- 修复打印预览看不到文字的BUG,原来是设置了QGraphicsView的前景色导致的,把前景色和背景色设置成一样的了,其实是有文字的,鬼想得到QPrintPreviewDialog里面的预览原来用的是QGraphicsView绘制的。
- 修复qchart图表控件鼠标按下松开后会跟随窗体移动的BUG,因为qchart鼠标按下是UngrabMouse事件而不是MouseButtonRelease。
- 修复表格行按下后自定义委托颜色在部分样式方案下设置不正确的BUG。
- 增加视频弹窗按钮,封装的统一的视频弹窗静态函数,直接传入url地址即可。
- 修复鼠标按下视频预览底部工具栏也能拖曳视频的BUG。
- 海康内核解析增加对通道的解析,比如可能是一个摄像机有多个通道,或者NVR多个通道。同时完善主码流子码流的解析,可以解析多个码流,之前只能解析主码流子码流两个。
- 海康内核句柄模式下增加等比例缩放自适应。
- onvif模块修复部分厂家摄像机比如天地伟业,搜索返回的媒体地址等一系列请求地址,没有加onvif节点的BUG。
V20211220
- 重新梳理整个onvif模块,调整对应的结构,删除多余的变量和设置等,对应云台控制等操作需要指定profile,通过参数传入。
- 对应图片参数操作需要指定videosource,通过参数传入。
- 去除数据库字段mediaurl、ptzurl,因为这两个数据每次都是更新重新获取的,通过getServices获取,这两个字段改成了videosource、profiletoken,用来从数据库读取出来,每次使用的时候自动下发。
- 预置位表格中的按钮样式调整,去掉圆角,增加边距,效果更完美。
- 新增nvr多个通道onvif支持,改动onvif模块代码和数据库结构。
- 搜索设备后判断是否多个videosource,多个表示有多个视频源,一般是NVR,也有部分IPC自带多个视频源。
- 有多个则根据不同厂家不同规则,找出对应的每个通道的videosource、profiletoken、rtspmain、rtspsub用分隔符 | 插入到临时表格中。
- 摄像机管理界面接收到添加设备的时候,在addDevice槽函数中,判断发过来的数据,带了 | 要分别取出来作为通道添加到数据库中。
- 重新定义搜索的摄像机设备命名规则,按照摄像机#ip地址末尾数字的方式。
- 如果是NVR过来的摄像机,增加自动查找NVR的名称插入数据库。
- 获取预置位增加立即清空所有行,之前是先清空内容再根据读取到的预置位个数设置行数。
- 增加双击打开NVR(也叫分组)对应策略 0-最后空白通道 1-从头清空通道。
- 增加双击打开IPC(也叫设备)对应策略 0-最后空白通道 1-最后按下通道。
- 改进在分辨率不同缩放比例保持一致的UI体验,不受缩放比例的影响。
- 修正异或加密,增加对@String开头的密文进行过滤,防止高版本产生的配置文件到低版本的Qt程序不能正确解析的BUG。
- 如果打开视频流出错提示 Server returned 5XX Server Error reply 表示摄像机的码流满了,可能多个地方在拉取码流导致摄像机输出的视频流被占满,已经没有更多资源。
V20211205
- 地图内核增加了海量点接口。
- 路径规划模块彻底重写,支持重新绘制、沿线移动等模式,数据表格显示。
- 设备轨迹模块改成从gps点集合文本文件加载进行循环动态模拟移动,默认飞机图标,以便转动角度。
- 设备播放增加保存视频开关配置参数,可以直接在界面上开启,开启后,通过rtsp从nvr取流比如回放视频,可以将回放的视频保存MP4文件到本地。
- 修正Qt6通过属性设置标签labtip不能居中对齐的BUG。
- 封装通用的设置一堆按钮比如添加、删除、保存、导入、导出等按钮图形字体的函数,直接传入父面板即可,自动查找对应的objname设置图标,省去一堆重复代码。
- 新增飞行轨迹模块frmDeviceGps2,之前的frmDeviceGps作为通过外部函数调用移动。
- 样式统一整理规范,分类6大类:normal、black、light、dark、flat、other。
x1void QUIStyle::getStyle(QStringList &styleNames, QStringList &styleFiles)
2{
3 static QStringList names;
4 if (names.count() == 0) {
5 names << "黑蓝色" << "软件黑" << "视频黑";
6 names << "深黑色" << "深蓝色" << "深灰色";
7 names << "扁平黑" << "扁平蓝" << "扁平灰";
8 names << "浅黑色" << "浅蓝色" << "浅灰色";
9 names << "普通黑" << "普通蓝" << "普通灰";
10 names << "大蓝色" << "大紫色" << "大银色";
11 }
12
13 //中文皮肤名称对应样式表文件
14 static QStringList files;
15 if (files.count() == 0) {
16 files << ":/qss/blackblue.css" << ":/qss/blacksoft.css" << ":/qss/blackvideo.css";
17 files << ":/qss/darkblack.css" << ":/qss/darkblue.css" << ":/qss/darkgray.css";
18 files << ":/qss/flatblack.css" << ":/qss/flatblue.css" << ":/qss/flatgray.css";
19 files << ":/qss/lightblack.css" << ":/qss/lightblue.css" << ":/qss/lightgray.css";
20 files << ":/qss/normalblack.css" << ":/qss/normalblue.css" << ":/qss/normalgray.css";
21 files << ":/qss/otherblue.css" << ":/qss/otherpurple.css" << ":/qss/othersilvery.css";
22 }
23
24 styleNames = names;
25 styleFiles = files;
26}
V20211111
- ONVIF组件增加图片参数范围获取,之前默认0-255,有些设备是0-100 0-128之类的,获取后设置到滑动条范围。
- ONVIF组件增加网络参数设置,比如IP地址,子网掩码、网关地址、DNS设置等。
- ONVIF组件将结构体定义统一移到一个头文件onvifstruct.h,方便后期拓展管理。
- 预置位模块,调用、添加(调用)、删除三种功能,改成了以三个按钮的形式加到每个预置位信息的后面直接单击使用。之前是先选中预置位所在行,然后单击下面的按钮。
- 通道轮询全部移动单独的悬停的模块。
- 视频面板窗体指针改成了全局变量,多处需要引用。
- 修复1通道轮询后,再次启动程序无法正确加载通道面板布局的BUG。
- 修复底部通道切换,部分样式效果悬停时候颜色不正确的BUG。改成了取报警图标颜色和已处理颜色。
- 路径规划模块增加模拟轨迹设备自动旋转角度移动。
- 路径规划模块模拟轨迹增加移动间隔下拉框选择。
- 修复Qt4对应webkit模块不支持返回数组的问题,改成字符串拼接用 ; 符隔开。
- 修复Qt4对应webkit模块不支持路径规划的BUG,因为开启了实时路况属性。
- 路径规划增加绘制实时轨迹线条,不同颜色显示。
V20211101
- 修正开启轮询后关闭所有视频通道不弹出提示信息。
- 所有信息框增加阴影边框区分突出显示,并跟随系统换肤自动更新边框阴影。
- 修正视频轮询分隔符,将|改成;因为如果是竖杠遇到带有参数的url则会出错。
- 将设备图片统一存放到config/device目录,之前在config目录下,随着越来越多非常凌乱。
- 修复之前通过信号执行通道切换,对应文字显示反了的BUG(通道1交换到通道2,新的通道2应该显示之前通道1的文本)。
- 将鼠标按下两个通道交换的处理代码,复用信号槽切换通道的函数。
- 将视频监控布局切换部分单独提取类VideoBox,专门负责管理各种通道布局切换,复用代码并且方便后期拓展,这部分代码和具体的处理无关,一直以来就想要单独提取出来进行管理,后期可以方便的增加其他异形布局以及255通道布局等,很多项目都用到了这个切换逻辑。
- 同时增加了布局切换子菜单比如13画面子菜单切换到52_64通道。
- 修复Qt6中视频控件悬浮条无法显示的BUG,因为Qt6将void enterEvent(QEvent *);改成了void enterEvent(QEnterEvent *);也不打个招呼。这种改变编译也不会提示的。
- 数据库组件修正sqlserver数据库必须设置数据源的不足,改成了dsn字符串形式,不需要新建数据源也能直接通信。
- 数据库组件修正mysql数据库必须存在默认数据库mysql的不足,改成了不需要默认数据库也能正常通信。
- 数据库组件修正没有默认数据库也能在建立连接后新建数据库操作。
- 数据库脚本执行将DROP DATABASE IF EXIST改成了DROP DATABASE ,这样无论什么时候都能先删除原来的数据库然后再新建数据库CREATE DATABASE。有些数据库不支持IF EXIST。
V20211005
- 修正ffmpeg内核,在播放地址不存在的情况下,打开容易卡主引起崩溃的BUG,在打开回调函数中增加对线程停止标志位的判断,一旦在打开的回调中识别到需要停止线程则立即返回结束。
- 增加临时信息中间弹出框提示信息,比如一次性关闭所有通道的时候,界面会卡主的期间提示。
- 增加忙碌鼠标图标切换显示,忙完以后自动恢复鼠标样式。
- 修正ffmpeg内核,开始时间记录可能出现问题的BUG,会导致部分特殊MP4文件打不开。
- 应用程序关闭,增加全局退出信号关联到视频通道管理类,先关闭所有视频通道再彻底退出应用程序。不这样处理的话,发现vlc内核在开启了视频存储的时候,会关不掉程序。
- 修复在没有声音播放的情况下主动调用停止播放造成崩溃的BUG。
- 修复在linux系统上QUIWidget弹出的无边框窗体带系统标题栏的BUG。
- 修复ffmpeg内核关闭视频后opengl窗体来不及隐藏的BUG。
- 修复重复立即刷新打开所有通道,前一次还没执行后一次又来了的BUG,改成了定时器处理,在立即执行前将上一次还没来得及执行的先停止。
- 增加about关于对话框窗体,显示版本号、版权所有、网址、电话等信息。
- 所有弹出窗体都跟随软件主窗体默认居中,这个特性非常棒。
- 所有皮肤增加右键菜单选中图标样式、右键菜单二级子菜单右侧小三角箭头图标样式,单选框、复选框、禁用状态图标全部更新,从图形字体绘制,极其统一舒服。
- 着重对日志类savelog增加了最大行数、最大文件大小等参数设置,可以设置按照行数或者大小来自动分割日志文件。
- 日志类增加了可过滤不同的消息类型,不同消息类型增加消息头。
- 经过大量对比测试发现,使用miniblink浏览器内核,容易卡,说不定什么时候就失效了,问题集中在32位,64位的目前没有发现这个现象,webengine暂时没有这个现象,但是加载打开摄像机的网页配置,还是miniblink更优秀。
- 中文标题栏支持换行,既可以副标题写在英文标题上,也可以同等大小字体写在中文标题上。
V20210922
- 视频控件边框增加0像素选项,这样看起来没有边框,有些场景需要无缝拼接。
- 修复当采用NVR通道作为摄像机视频流显示的时候,ONVIF处理索引越界崩溃的情况,因为一台NVR同一个IP地址对应多个摄像机。
- 所有样式17套皮肤更新边框颜色。
- 系统信息增加对应的编译器名字、位数、版本等。
- 演示demo增加视频叠加演示功能,比如在主视频的左上角、右上角、左下角、右下角在增加一个视频缩略图显示。
- 新增天气预报模块,可设置城市、采集间隔、展示样式等。
- 增加了vlc内核下USB摄像头格式自动纠正,如果采用ffmpeg的格式video=USB2.0 PC CAMERA|1920x1080自动纠正。
- 纠正vlc内核下USB摄像头不自动拉伸的BUG。
- 修正vlc内核动态保存视频文件,文件命名不符合规范,重新按照设定的重命名。
- 修复vlc内核中USB摄像头会当做rtsp视频流的BUG。
- 天气预报模块新增城市显示,新增双击弹出天气预报设置,含打印信息。
- 系统信息,增加秘钥文件的内容,比如允许的设备数量、到期日期等。
- 修复配置文件一旦新增加节点,之前节点全部初始值运行的BUG,应该是存在的节点则读取节点值,不存在的节点以初始值运行。
V20210705
- 改进窗体居中显示算法,可设置参照窗体,默认基于当前屏幕中心,可设置参照主窗体则基于参照窗体,在大分辨率屏幕效果非常好,不然主窗体很小,弹个窗找不到还在很远的地方,还以为没有弹呢。
- 将登陆窗体、登出窗体、用户管理等公用界面,做成了通用库core_form。
- 修复MAC系统上无边框窗体无法最小化的BUG。
- 增加超级管理员密码A具有所有权限的机制,避免管理员误将系统设置权限取消后无法再次进去系统设置的问题。
- 图片参数增加锐度,图片参数设置滑块调节松开立即设置。
- 修复当没有启用图片地图的时候对应界面隐藏的时候保存设备坐标位置报错BUG,因为没有启用的情况下没有设置对应的对象指针。
V20210603
- 将onvif搜索的用户密码,设备播放界面的设备密码等配置参数全部改成了密文存储。
- 大量修改代码,全部支持Qt4-Qt6所有版本。
- 调整onvif代码执行机制,改成了异步执行。
- 云台协议增加了连续移动。
- 增加了预置位相关处理,包括获取预置位、调用预置位、添加预置位、删除预置位。
- 自动巡航按照预置位集合进行,采用定时器去调用预置位队列。
- 增加图文警情行数、窗口信息行数配置,0行表示自动处理。
- 做了大量的代码改进,比如onvif内核换成了QDom对象处理,之前是采用的QXmlQuery查询,由于XmlPatterns这个模块逐渐废弃了,而且在Qt6中不再有,所以彻底移除了XmlPatterns相关的代码,改用其他处理方式实现。
- 增加了预置位和自动巡航处理,其中包括获取预置位集合、调用预置位、添加预置位、删除预置位、设置起始位、调用起始位等。
- ONVIF内核几乎全部重写,将数据改成了结构体,比如设备信息、预置位信息、事件信息等,可以存储更多的数据,拓展也非常灵活。
- onvif处理部分增加了对非onvif设备的过滤,通过判断是否存在onvif地址。这样可以大大加快处理速度,打开视频的时候去实例化onvif通信,关闭视频的时候删除对应的onvif类,这样可以动态响应。
- 所有onvif指令改成了线程处理,处理完成一个立马处理下一个,排队处理。
V20210425
- 配置文件密码改成密文存储。
- 增加了无敌的牛逼的万能的完美入微级自动分页导航控件。
- 日志记录表增加索引,速度提升100倍以上。
- 新增多个设备轨迹 不同颜色+传入经纬度 单独示例。
- 对地图核心类所有覆盖物都增加颜色+粗细+透明度的参数,可动态传入对应值。
- 系统设置增加用户管理模块,可分别设置对应的权限。
- 万能权限管理算法,通过设置不同需要授权的模块名称,对应切换的按钮自动计算。
- 增加了appkey秘钥类,用于校验秘钥是否正确,运行时间等。
V20210403
- 增加全局变量AppData::LastLiveTime,记住程序最后的活动时间-包括键盘+鼠标活动,用于两个判断,一个是超过多久没有操作全屏下隐藏鼠标光标,一个是超过多久没有操作如果没有全屏则自动全屏。
- 增加App::TimeAutoFull配置参数用来判断比较超时自动全屏。
- 重命名为TimeHideCursor表示程序多久未操作自动隐藏光标,TimeAutoFull程序多久未操作自动全屏界面,下拉框选项值增加0,表示不启用此功能。
- 增加信息列表模块frmMsgList,用于图文列表显示信息,对应兄弟类frmMsgTable用于表格显示消息。
- 大改版,将中间部分全部改成了QMainWindow,子模块全部采用停靠窗体,可以悬浮半透明,自动记忆每个模块的最后的位置,启动后自动应用。
- 移除大改版后的所有不需要用的变量和配置参数,重新调整配置参数。
- 增加透明度参数用于停靠窗体独立出来后的透明度。
- 将摄像机控制部分比如云台+控制+预置位+巡航,单独分类到ipc模块,方便管理。
- 限定操作员不能移动停靠窗体等,需要管理员设计好。
- 修复系统设置中工作模式等切换造成的自动重启会弹出退出和登录两个窗体的BUG。
- 修复自动登录用户计算不正确的BUG,要以最后登录的用户为准。
V20210322
- USB摄像头增加参数帧率,第二个参数是分辨率,第三个参数为帧率,不设置则采用默认的帧率,video=USB2.0 PC CAMERA|1920x1080|25。
- 增加独立的demo模块,专门用于测试监控系统中用到的组件和控件,演示如何使用,比如视频图片界面演示从文件夹读取图片绘制到窗体,视频窗体演示系统的核心组件视频控件的设置参数如何使用等。
- 增加了对其他数据库的支持,比如posgres、oracle、odbc、kingbase等数据库,理论上只要支持odbc数据源方式的都支持。
- 增加IndexStart启动窗体索引配置参数,0-主程序 1-演示示例。
V20210305
- 修复数据库有时候没加载到的BUG。
- 新增配置参数控制画面切换的菜单和快捷图标是否显示。
- ffmpeg内核增加了可动态保存机制,点击开始保存按钮启动保存,单击结束则生成视频文件,如此往复。
- 海康内核判断主码流子码流改成了 /101? 和 /main/ 同时判断。
- 新增多屏幕的支持,自动在对应屏幕最大化全屏,对话框位置,右下角提示框等。
- 再次分类存放代码文件,分成core ui class三大类。
- 系统配置更改视频控件参数,统一一个函数设置,initCommonVideoWidget函数中做了过滤,必须关闭状态的视频控件设置才起作用。
- 设备播放模块增加大华NVR的远程回放地址,其他地址计算算法调整。
- 新增界面模块功能启用配置参数。
- 新增主界面顶部导航模块中间界面,用于不同的运行模式加载不同的模块。
0.8.3 快速迭代
V20201212
- 增加USB摄像机分辨率设置,直接url带掉。
- 所有地图内核公用一个,复用代码。
- 增加地图默认级别和中心点坐标设置参数。
- 主界面四个模块独立出来,做成了可配置,这样后期可以任意位置放置自定义模块。
- 四个模块标题栏自定义。
- vlc内核和mpv内核的离线判断,当句柄模式下,统一为getLastTime,当调用该函数的时候自动查询播放状态,如果正在播放则自动更新时间为当前时间。
- 将各种在代码中define定义不同内核的代码全部优化,统一为一个类,很大减少代码量,统一为CommonVideoWidget和CommonVideoManage类。
V20201108
- 轮询点模块增加批量生成功能。
- 录像机、摄像机、轮询点,增加导入导出功能。
- ffmpeg内核增加读取帧回调,超时识别,可以快速识别掉线。
20200828
- 增加了云台控制过滤,没有打开的视频禁用云台。
- linux上全屏BUG修复,采用showfullscreen。
- 增加轮询点管理模块。
- 修正轮询的可能崩溃的BUG。
V20200730
- 系统设置增加了视频上传模块,用来将本地的视频文件传输到服务器,多线程并发。
- 视频监控内核新增MPV内核,修正了其他内核的部分函数和处理。
- 海康内核进行大改动,同时支持视频流和本地MP4文件播放,自动分析切换。
- 海康内核增加回调处理,可以拿到每一张图片。
- 海康内核进行了linux上的实验,可以正常播放。
- ffmpeg内核增加保存到MP4。
- 本地文件回放vlc部分增加进度切换等。
- 悬浮条关闭按钮增加实际处理,之前只是打印消息。
- 改进了vlc和mpv的事件回调机制,使其同时支持qt4+qt5。
V20200620
- 增加了opengl显示实时视频,CPU占用极低。
- 增加了地图上设备点位置的调整。
- 设备点双击弹出实时视频预览。
- 增加GPS运动轨迹显示。
- ffmpeg解码类增加了音频播放,采用的QAudioOutput。
V20191105
- 增加云台控制功能,可以上下左右等八个方位控制云台,默认采用相对移动,云台中间按下表示复位。
- 系统设置增加码流类型选择,默认子码流,切换完自动应用。
- 云台控制增加速度功能,值越大,速度越快。
- 增加焦距控制,可放大缩小,速度也可控制。
1 用户登录退出
1.1 用户登录
系统启动后,首先会弹出用户登录界面,从用户姓名的下拉框选择用户名,然后输入密码(默认用户名密码都是admin),单击登录按钮,密码正确则会进入到系统主界面,错误会弹出提示,错误超过三次自动关闭,需要重新打开软件。
在登录界面可以勾选是否记住密码,是否自动登录,如果勾选了记住密码,则下次启用软件会自动填入最后用户的密码,勾选了自动登录(以最后的用户信息作为当前登录用户)则启动后直接进入主界面。如果开启了自动登录,不会弹出登录界面,可以在系统设置中关闭自动登录和记住密码。
1.2 用户退出
在主界面单击右上角的关闭按钮,会弹出用户退出界面,需要输入密码验证防止误关闭,会自动填入登录的用户名,密码输入正确才会退出软件。用户登录和退出都内置了超级密码a防止管理员忘记密码。
2 主界面操作
@@ -708,7 +708,9 @@ header, .context-menu, .megamenu-content, footer{
打开项目:QT VS TOOLS – Open Qt Project File 选择 video_system.pro,然后等待项目加载完毕。
由于项目中用到了ffmpeg和vlc,引用了对应的lib库,所以在用vs+qt的开发环境中,很可能报错提示映像是不安全的错误,导致编译通不过,需要做个设置。
解决方法
- 第一步:打开该项目的“属性页”对话框。
- 第二步:单击“链接器”文件夹。
- 第三步:单击“命令行”属性页。
- 第四步:将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
- 如果设置完发现还是不行,那应该是没有一开始就设置这个步骤,你需要打开项目以后就设置好这个步骤,再去编译,建议重新解压项目来一遍。
13.6 数据库设置mysql
如果在数据库设置中选择了mysql数据库,需要对mysql数据库做个设置,就是将编码设置成utf8,已设置可以跳过,不然很可能数据库无法正常使用。
13.7 打开USB摄像头
在加载USB摄像机的时候,需要填写对应USB设备的名称,可以通过命令行和设备管理器查看对应的名称,要英文的。
在需要加载多个USB摄像机的场景下,有时候会遇到同名的USB名称设备,此时需要打开注册表进行设备名称修改后,按照新修改后的设备名称填入即可。
-
13.8 项目代码行数
整个项目源代码行数大概30W行,其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
13.9 编译ffmpeg
- 第一步:下载好ffmpeg,这个可以去官网 http://ffmpeg.org/自行找到下载位置下载。要注意的是有些很老的嵌入式linux系统的编译器未必支持最新的ffmpeg4,建议下载3。
- 第二步:复制ffmpeg-3.4.5.tar.gz 到自定义文件夹下,我这里是/home/liu
- 第三步:解压ffmpeg,tar –zxvf ffmpeg-3.4.5.tar.gz –C /home/liu
- 第四步:安装编译ffmpeg依赖的包 apt-get install yasm
- 第五步:编译ffmpeg cd /home/liu/ffmpeg-3.4.5
- 如果编译静态库执行以下命令
- ./configure --prefix=host --enable-static --disable-shared --disable-doc
- 如果编译动态库执行以下命令
- ./configure --prefix=host --enable-shared --disable-static --disable-doc
- 如果需要编译ffplay以便直接用其打开测试,可以在参数后面加上--enable-ffplay
- ./configure --prefix=host --enable-shared --disable-static --disable-doc --enable-ffplay
- 嵌入式交叉编译需要指定编译器路径 --cross-prefix=/usr/local/arm-linux-gcc-4.9.2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.08_linux/bin/arm-linux-gnueabihf- --arch=arm --target-os=linux
- 其他常用参数 --disable-zlib --disable-xlib --enable-x11grab --disable-libxcb
- 可以执行./configure –help 来查看支持哪些参数,尤其是各种解码器的开关,具体可搜索。
- 其他参数可参见网页 https://blog.csdn.net/momo0853/article/details/78043903
- make (还可以开启多线程编译加快速度 make –j4)
- make install
- 第六步:打开ffmpeg3.4.5/host目录,生成的文件都在这里,拿去用吧。
+ 13.8 项目代码行数
整个项目源代码行数大概30W行,其中代码13.5W行(占比45%),注释12.7W行(占比42%),空行3.5W行。分层设计注释详细。
13.9 编译ffmpeg
下面是linux系统编译ffmpeg步骤
- 第一步:下载好ffmpeg,这个可以去官网 http://ffmpeg.org/ 自行找到下载位置下载。要注意的是有些很老的嵌入式linux系统的编译器未必支持最新的ffmpeg4,建议下载3。
- 第二步:复制ffmpeg-3.4.5.tar.gz 到自定义文件夹下,我这里是/home/liu
- 第三步:解压ffmpeg,tar –zxvf ffmpeg-3.4.5.tar.gz –C /home/liu
- 第四步:安装编译ffmpeg依赖的包 apt-get install yasm
- 第五步:编译ffmpeg cd /home/liu/ffmpeg-3.4.5
- 如果编译静态库执行以下命令
- ./configure --prefix=host --enable-static --disable-shared --disable-doc
- 如果编译动态库执行以下命令
- ./configure --prefix=host --enable-shared --disable-static --disable-doc
- 如果需要编译ffplay以便直接用其打开测试,可以在参数后面加上--enable-ffplay
- ./configure --prefix=host --enable-shared --disable-static --disable-doc --enable-ffplay
- 嵌入式交叉编译需要指定编译器路径 --cross-prefix=/usr/local/arm-linux-gcc-4.9.2/gcc-linaro-arm-linux-gnueabihf-4.9-2014.08_linux/bin/arm-linux-gnueabihf- --arch=arm --target-os=linux
- 其他常用参数 --disable-zlib --disable-xlib --enable-x11grab --disable-libxcb
- 可以执行./configure –help 来查看支持哪些参数,尤其是各种解码器的开关,具体可搜索。
- 其他参数可参见网页 https://blog.csdn.net/momo0853/article/details/78043903
- make (还可以开启多线程编译加快速度 make –j4)
- make install
- 第六步:打开ffmpeg3.4.5/host目录,生成的文件都在这里,拿去用吧。
windows系统采用mingw编译ffmpeg https://blog.csdn.net/yp18792574062/article/details/108962638
13.10 高分屏缩放
- 在windows上经常遇到高分屏缩放的问题,很头疼,貌似这东西就是windows首发的。
- 在Qt4时代的程序遇到高分屏缩放,不作任何处理,毕竟Qt4时代(2010年以前)出来的时候几乎还没高分屏缩放这东西。
- 从Qt5.6开始提供了高分屏缩放支持,需要在main函数前面设置 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- 从Qt5.14开始提供了高分屏缩放策略设置,需要在main函数前面设置 QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
- 从Qt6.0开始默认就开启高分屏属性Qt::AA_EnableHighDpiScaling,而且不允许关闭(所以你会发现程序用Qt6编译后界面变得很大)。可以通过setHighDpiScaleFactorRoundingPolicy函数设置策略。
- 如果不想要高分屏,希望程序永远保持默认的尺寸,你需要在main函数前面设置 QApplication::setAttribute(Qt::AA_Use96Dpi); 表示永远不缩放。
- 如果希望启用Qt的高分屏则需要设置Qt::AA_EnableHighDpiScaling和setHighDpiScaleFactorRoundingPolicy。缺点是图片容易发虚,比如复选框的边框,哪怕是Qt内置样式风格或者系统默认风格也一样。
xxxxxxxxxx
51int main(int argc, char *argv[])
2{
3 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
4 QApplication a(argc, argv);
5}
- 另外一种办法就是写个文本文件qt.conf(Qt程序默认的标准配置文件,必须是这个名字),写入内容后,放到可执行文件同一目录即可,此方法采用操作系统的策略进行缩放,推荐此方法,虽然看起来稍微有点模糊,但不会出现发虚等问题,整体一致。
xxxxxxxxxx
21[Platforms]
2WindowsArguments = dpiawareness=0
- 没有完美的高分屏支持方法,都是只能尽量满足,哪怕是windows系统本身,在开启缩放的时候,任务管理器也是模糊的很(尽管改成124%可以改变,但总归不是好办法),还有很多其他知名软件也是如此。
- 参考文章 https://blog.csdn.net/startl/article/details/105862817
+
+