Commit 367ec111e48f9ffc7829cc79369c9c8988114f78

Authored by 64850858
1 parent e48ef997

更新readme

README.md
... ... @@ -92,10 +92,10 @@ https://gitee.com/18010473990/wvp-GB28181.git
92 92 - [ ] 添加ONVIF探测局域网内的设备
93 93 - [X] 添加RTMP视频
94 94 - [X] 云端录像(需要部署单独服务配合使用)
95   -- [X] 支持使用mysql作为数据库, 默认sqlite3,开箱即用。
  95 +- [X] 支持使用mysql作为数据库,默认sqlite3,开箱即用。
96 96 - [ ] 添加系统配置
97 97 - [ ] 添加用户管理
98   -
  98 +- [X] WEB端支持播放H264与H265,音频支持G.711A/G.711U/AAC,覆盖国标常用编码格式。
99 99  
100 100  
101 101  
... ...
src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java 0 → 100644
  1 +package com.genersoft.iot.vmp.conf;
  2 +
  3 +import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
  4 +import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.scheduling.annotation.Scheduled;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +@Component
  10 +public class WVPTimerTask {
  11 +
  12 + @Autowired
  13 + private IRedisCatchStorage redisCatchStorage;
  14 +
  15 + @Autowired
  16 + private SipConfig sipConfig;
  17 +
  18 + @Autowired
  19 + private MediaConfig mediaConfig;
  20 +
  21 + @Scheduled(cron="0/2 * * * * ? ") //每3秒执行一次
  22 + public void execute(){
  23 +// redisCatchStorage.updateWVPInfo();
  24 + }
  25 +}
... ...
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
1 1 package com.genersoft.iot.vmp.storager;
2 2  
  3 +import com.alibaba.fastjson.JSONObject;
3 4 import com.genersoft.iot.vmp.common.StreamInfo;
4 5 import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
5 6 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
... ... @@ -117,4 +118,9 @@ public interface IRedisCatchStorage {
117 118 * 设置所有设备离线
118 119 */
119 120 void outlineForAll();
  121 +
  122 + /**
  123 + * 在redis添加wvp的信息
  124 + */
  125 + void updateWVPInfo(JSONObject jsonObject);
120 126 }
... ...
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
1 1 package com.genersoft.iot.vmp.storager.impl;
2 2  
  3 +import com.alibaba.fastjson.JSONObject;
3 4 import com.genersoft.iot.vmp.common.StreamInfo;
4 5 import com.genersoft.iot.vmp.common.VideoManagerConstants;
5 6 import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
... ... @@ -302,4 +303,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
302 303 redis.del(key);
303 304 }
304 305 }
  306 +
  307 + @Override
  308 + public void updateWVPInfo(JSONObject jsonObject) {
  309 +
  310 + }
305 311 }
... ...
web_src/static/css/login.css 0 → 100755
  1 +
  2 +
  3 +
  4 +
  5 +/*//////////////////////////////////////////////////////////////////
  6 +[ FONT ]*/
  7 +
  8 +@font-face {
  9 + font-family: Poppins-Regular;
  10 + src: url('../fonts/poppins/Poppins-Regular.ttf');
  11 +}
  12 +
  13 +@font-face {
  14 + font-family: Poppins-Medium;
  15 + src: url('../fonts/poppins/Poppins-Medium.ttf');
  16 +}
  17 +
  18 +@font-face {
  19 + font-family: Poppins-Bold;
  20 + src: url('../fonts/poppins/Poppins-Bold.ttf');
  21 +}
  22 +
  23 +@font-face {
  24 + font-family: Poppins-SemiBold;
  25 + src: url('../fonts/poppins/Poppins-SemiBold.ttf');
  26 +}
  27 +
  28 +.limiter {
  29 + width: 100%;
  30 + margin: 0 auto;
  31 + font-family: Poppins-Regular, sans-serif;
  32 +}
  33 +
  34 +.container-login100 {
  35 + width: 100%;
  36 + min-height: 100vh;
  37 + display: -webkit-box;
  38 + display: -webkit-flex;
  39 + display: -moz-box;
  40 + display: -ms-flexbox;
  41 + display: flex;
  42 + flex-wrap: wrap;
  43 + justify-content: center;
  44 + align-items: center;
  45 + background: #f2f2f2;
  46 +}
  47 +
  48 +.wrap-login100 {
  49 + background: #fff;
  50 + border-radius: 10px;
  51 + overflow: hidden;
  52 + padding: 77px 55px 33px 55px;
  53 +
  54 + box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);
  55 + -moz-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);
  56 + -webkit-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);
  57 + -o-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);
  58 + -ms-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);
  59 +}
  60 +
  61 +
  62 +/*------------------------------------------------------------------
  63 +[ Form ]*/
  64 +
  65 +.login100-form {
  66 + width: 100%;
  67 +}
  68 +
  69 +.login100-form-title {
  70 + display: block;
  71 + font-family: Poppins-Bold;
  72 + font-size: 30px;
  73 + color: #333333;
  74 + line-height: 1.2;
  75 + text-align: center;
  76 +
  77 +}
  78 +.login100-form-title i {
  79 + font-size: 60px;
  80 +}
  81 +
  82 +/*------------------------------------------------------------------
  83 +[ Input ]*/
  84 +
  85 +.wrap-input100 {
  86 + width: 100%;
  87 + position: relative;
  88 + border-bottom: 2px solid #adadad;
  89 + margin-bottom: 37px;
  90 +}
  91 +
  92 +.input100 {
  93 + font-family: Poppins-Regular;
  94 + font-size: 15px;
  95 + color: #555555;
  96 + line-height: 1.2;
  97 +
  98 + display: block;
  99 + width: 100%;
  100 + height: 45px;
  101 + background: transparent;
  102 + padding: 0 5px;
  103 + outline: none;
  104 + border: none;
  105 +}
  106 +.input100::-webkit-input-placeholder { color: #adadad;}
  107 +.input100:-moz-placeholder { color: #adadad;}
  108 +.input100::-moz-placeholder { color: #adadad;}
  109 +.input100:-ms-input-placeholder { color: #adadad;}
  110 +
  111 +/*---------------------------------------------*/
  112 +.focus-input100 {
  113 + position: absolute;
  114 + display: block;
  115 + width: 100%;
  116 + height: 100%;
  117 + top: 0;
  118 + left: 0;
  119 + pointer-events: none;
  120 + color:transparent;
  121 +}
  122 +
  123 +.focus-input100::before {
  124 + content: "";
  125 + display: block;
  126 + position: absolute;
  127 + bottom: -2px;
  128 + left: 0;
  129 + width: 0;
  130 + height: 2px;
  131 +
  132 + -webkit-transition: all 0.4s;
  133 + -o-transition: all 0.4s;
  134 + -moz-transition: all 0.4s;
  135 + transition: all 0.4s;
  136 +
  137 + background: #6a7dfe;
  138 + background: -webkit-linear-gradient(left, #21d4fd, #b721ff);
  139 + background: -o-linear-gradient(left, #21d4fd, #b721ff);
  140 + background: -moz-linear-gradient(left, #21d4fd, #b721ff);
  141 + background: linear-gradient(left, #21d4fd, #b721ff);
  142 +}
  143 +
  144 +.focus-input100::after {
  145 + font-family: Poppins-Regular;
  146 + font-size: 15px;
  147 + color: #999999;
  148 + line-height: 1.2;
  149 +
  150 + content: attr(data-placeholder);
  151 + display: block;
  152 + width: 100%;
  153 + position: absolute;
  154 + top: 16px;
  155 + left: 0px;
  156 + padding-left: 5px;
  157 +
  158 + -webkit-transition: all 0.4s;
  159 + -o-transition: all 0.4s;
  160 + -moz-transition: all 0.4s;
  161 + transition: all 0.4s;
  162 +}
  163 +
  164 +.input100:focus + .focus-input100::after {
  165 + top: -15px;
  166 +}
  167 +
  168 +.input100:focus + .focus-input100::before {
  169 + width: 100%;
  170 +}
  171 +
  172 +.has-val.input100 + .focus-input100::after {
  173 + top: -15px;
  174 +}
  175 +
  176 +.has-val.input100 + .focus-input100::before {
  177 + width: 100%;
  178 +}
  179 +
  180 +/*---------------------------------------------*/
  181 +.btn-show-pass {
  182 + font-size: 15px;
  183 + color: #999999;
  184 +
  185 + display: -webkit-box;
  186 + display: -webkit-flex;
  187 + display: -moz-box;
  188 + display: -ms-flexbox;
  189 + display: flex;
  190 + align-items: center;
  191 + position: absolute;
  192 + height: 100%;
  193 + top: 0;
  194 + right: 0;
  195 + padding-right: 5px;
  196 + cursor: pointer;
  197 + -webkit-transition: all 0.4s;
  198 + -o-transition: all 0.4s;
  199 + -moz-transition: all 0.4s;
  200 + transition: all 0.4s;
  201 +}
  202 +
  203 +.btn-show-pass:hover {
  204 + color: #6a7dfe;
  205 + color: -webkit-linear-gradient(left, #21d4fd, #b721ff);
  206 + color: -o-linear-gradient(left, #21d4fd, #b721ff);
  207 + color: -moz-linear-gradient(left, #21d4fd, #b721ff);
  208 + color: linear-gradient(left, #21d4fd, #b721ff);
  209 +}
  210 +
  211 +.btn-show-pass.active {
  212 + color: #6a7dfe;
  213 + color: -webkit-linear-gradient(left, #21d4fd, #b721ff);
  214 + color: -o-linear-gradient(left, #21d4fd, #b721ff);
  215 + color: -moz-linear-gradient(left, #21d4fd, #b721ff);
  216 + color: linear-gradient(left, #21d4fd, #b721ff);
  217 +}
  218 +
  219 +
  220 +
  221 +/*------------------------------------------------------------------
  222 +[ Button ]*/
  223 +.container-login100-form-btn {
  224 + display: -webkit-box;
  225 + display: -webkit-flex;
  226 + display: -moz-box;
  227 + display: -ms-flexbox;
  228 + display: flex;
  229 + flex-wrap: wrap;
  230 + justify-content: center;
  231 + padding-top: 13px;
  232 +}
  233 +
  234 +.wrap-login100-form-btn {
  235 + width: 100%;
  236 + display: block;
  237 + position: relative;
  238 + z-index: 1;
  239 + border-radius: 25px;
  240 + overflow: hidden;
  241 + margin: 0 auto;
  242 +}
  243 +
  244 +.login100-form-bgbtn {
  245 + position: absolute;
  246 + z-index: -1;
  247 + width: 300%;
  248 + height: 100%;
  249 + background: #a64bf4;
  250 + background: -webkit-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);
  251 + background: -o-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);
  252 + background: -moz-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);
  253 + background: linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);
  254 + top: 0;
  255 + left: -100%;
  256 +
  257 + -webkit-transition: all 0.4s;
  258 + -o-transition: all 0.4s;
  259 + -moz-transition: all 0.4s;
  260 + transition: all 0.4s;
  261 +}
  262 +
  263 +.login100-form-btn {
  264 + font-family: Poppins-Medium;
  265 + font-size: 15px;
  266 + color: #fff;
  267 + line-height: 1.2;
  268 + text-transform: uppercase;
  269 +
  270 + display: -webkit-box;
  271 + display: -webkit-flex;
  272 + display: -moz-box;
  273 + display: -ms-flexbox;
  274 + display: flex;
  275 + justify-content: center;
  276 + align-items: center;
  277 + padding: 0 20px;
  278 + width: 100%;
  279 + height: 50px;
  280 + outline: none !important;
  281 + border: none;
  282 + background: transparent;
  283 +}
  284 +
  285 +.login100-form-btn:hover {
  286 + cursor: pointer;
  287 +}
  288 +
  289 +.wrap-login100-form-btn:hover .login100-form-bgbtn {
  290 + left: 0;
  291 +}
  292 +
  293 +
  294 +/*------------------------------------------------------------------
  295 +[ Responsive ]*/
  296 +
  297 +@media (max-width: 576px) {
  298 + .wrap-login100 {
  299 + padding: 77px 15px 33px 15px;
  300 + }
  301 +}
  302 +
  303 +
  304 +
  305 +/*------------------------------------------------------------------
  306 +[ Alert validate ]*/
  307 +
  308 +.validate-input {
  309 + position: relative;
  310 +}
  311 +
  312 +.alert-validate::before {
  313 + content: attr(data-validate);
  314 + position: absolute;
  315 + max-width: 70%;
  316 + background-color: #fff;
  317 + border: 1px solid #c80000;
  318 + border-radius: 2px;
  319 + padding: 4px 25px 4px 10px;
  320 + top: 50%;
  321 + -webkit-transform: translateY(-50%);
  322 + -moz-transform: translateY(-50%);
  323 + -ms-transform: translateY(-50%);
  324 + -o-transform: translateY(-50%);
  325 + transform: translateY(-50%);
  326 + right: 0px;
  327 + pointer-events: none;
  328 +
  329 + font-family: Poppins-Regular;
  330 + color: #c80000;
  331 + font-size: 13px;
  332 + line-height: 1.4;
  333 + text-align: left;
  334 +
  335 + visibility: hidden;
  336 + opacity: 0;
  337 +
  338 + -webkit-transition: opacity 0.4s;
  339 + -o-transition: opacity 0.4s;
  340 + -moz-transition: opacity 0.4s;
  341 + transition: opacity 0.4s;
  342 +}
  343 +
  344 +.alert-validate::after {
  345 + content: "\f06a";
  346 + font-family: FontAwesome;
  347 + font-size: 16px;
  348 + color: #c80000;
  349 +
  350 + display: block;
  351 + position: absolute;
  352 + background-color: #fff;
  353 + top: 50%;
  354 + -webkit-transform: translateY(-50%);
  355 + -moz-transform: translateY(-50%);
  356 + -ms-transform: translateY(-50%);
  357 + -o-transform: translateY(-50%);
  358 + transform: translateY(-50%);
  359 + right: 5px;
  360 +}
  361 +
  362 +.alert-validate:hover:before {
  363 + visibility: visible;
  364 + opacity: 1;
  365 +}
  366 +
  367 +@media (max-width: 992px) {
  368 + .alert-validate::before {
  369 + visibility: visible;
  370 + opacity: 1;
  371 + }
  372 +}
  373 +
  374 +/** util **/
  375 +.p-b-26 {padding-bottom: 26px;}
  376 +.p-b-48 {padding-bottom: 48px;}
  377 +.p-t-115 {padding-top: 115px;}
  378 +
  379 +/**font**/
  380 +/* .zmdi {
  381 + display: inline-block;
  382 + font: normal normal normal 14px/1 'Material-Design-Iconic-Font';
  383 + font-size: 14px;
  384 + font-size: inherit;
  385 + text-rendering: auto;
  386 + -webkit-font-smoothing: antialiased;
  387 + -moz-osx-font-smoothing: grayscale;
  388 +}
  389 +.zmdi-font::before {
  390 + content: '\f16a';
  391 +}
  392 +.login100-form-title i {
  393 + font-size: 60px;
  394 +} */
  395 +
... ...