From 367ec111e48f9ffc7829cc79369c9c8988114f78 Mon Sep 17 00:00:00 2001 From: 64850858 <648540858@qq.com> Date: Wed, 14 Jul 2021 16:06:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- .../genersoft/iot/vmp/conf/WVPTimerTask.java | 25 ++ .../iot/vmp/storager/IRedisCatchStorage.java | 6 + .../storager/impl/RedisCatchStorageImpl.java | 6 + web_src/static/css/login.css | 395 ++++++++++++++++++ 5 files changed, 434 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java create mode 100755 web_src/static/css/login.css diff --git a/README.md b/README.md index 12d84fb0..d64a8131 100644 --- a/README.md +++ b/README.md @@ -92,10 +92,10 @@ https://gitee.com/18010473990/wvp-GB28181.git - [ ] 添加ONVIF探测局域网内的设备 - [X] 添加RTMP视频 - [X] 云端录像(需要部署单独服务配合使用) -- [X] 支持使用mysql作为数据库, 默认sqlite3,开箱即用。 +- [X] 支持使用mysql作为数据库,默认sqlite3,开箱即用。 - [ ] 添加系统配置 - [ ] 添加用户管理 - +- [X] WEB端支持播放H264与H265,音频支持G.711A/G.711U/AAC,覆盖国标常用编码格式。 diff --git a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java new file mode 100644 index 00000000..05d6da19 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java @@ -0,0 +1,25 @@ +package com.genersoft.iot.vmp.conf; + +import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class WVPTimerTask { + + @Autowired + private IRedisCatchStorage redisCatchStorage; + + @Autowired + private SipConfig sipConfig; + + @Autowired + private MediaConfig mediaConfig; + + @Scheduled(cron="0/2 * * * * ? ") //每3秒执行一次 + public void execute(){ +// redisCatchStorage.updateWVPInfo(); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java index 649fb71a..56c31c18 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.storager; +import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; @@ -117,4 +118,9 @@ public interface IRedisCatchStorage { * 设置所有设备离线 */ void outlineForAll(); + + /** + * 在redis添加wvp的信息 + */ + void updateWVPInfo(JSONObject jsonObject); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 21204157..86909c76 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.storager.impl; +import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; @@ -302,4 +303,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { redis.del(key); } } + + @Override + public void updateWVPInfo(JSONObject jsonObject) { + + } } diff --git a/web_src/static/css/login.css b/web_src/static/css/login.css new file mode 100755 index 00000000..a515431a --- /dev/null +++ b/web_src/static/css/login.css @@ -0,0 +1,395 @@ + + + + +/*////////////////////////////////////////////////////////////////// +[ FONT ]*/ + +@font-face { + font-family: Poppins-Regular; + src: url('../fonts/poppins/Poppins-Regular.ttf'); +} + +@font-face { + font-family: Poppins-Medium; + src: url('../fonts/poppins/Poppins-Medium.ttf'); +} + +@font-face { + font-family: Poppins-Bold; + src: url('../fonts/poppins/Poppins-Bold.ttf'); +} + +@font-face { + font-family: Poppins-SemiBold; + src: url('../fonts/poppins/Poppins-SemiBold.ttf'); +} + +.limiter { + width: 100%; + margin: 0 auto; + font-family: Poppins-Regular, sans-serif; +} + +.container-login100 { + width: 100%; + min-height: 100vh; + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background: #f2f2f2; +} + +.wrap-login100 { + background: #fff; + border-radius: 10px; + overflow: hidden; + padding: 77px 55px 33px 55px; + + box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -o-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); + -ms-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1); +} + + +/*------------------------------------------------------------------ +[ Form ]*/ + +.login100-form { + width: 100%; +} + +.login100-form-title { + display: block; + font-family: Poppins-Bold; + font-size: 30px; + color: #333333; + line-height: 1.2; + text-align: center; + +} +.login100-form-title i { + font-size: 60px; +} + +/*------------------------------------------------------------------ +[ Input ]*/ + +.wrap-input100 { + width: 100%; + position: relative; + border-bottom: 2px solid #adadad; + margin-bottom: 37px; +} + +.input100 { + font-family: Poppins-Regular; + font-size: 15px; + color: #555555; + line-height: 1.2; + + display: block; + width: 100%; + height: 45px; + background: transparent; + padding: 0 5px; + outline: none; + border: none; +} +.input100::-webkit-input-placeholder { color: #adadad;} +.input100:-moz-placeholder { color: #adadad;} +.input100::-moz-placeholder { color: #adadad;} +.input100:-ms-input-placeholder { color: #adadad;} + +/*---------------------------------------------*/ +.focus-input100 { + position: absolute; + display: block; + width: 100%; + height: 100%; + top: 0; + left: 0; + pointer-events: none; + color:transparent; +} + +.focus-input100::before { + content: ""; + display: block; + position: absolute; + bottom: -2px; + left: 0; + width: 0; + height: 2px; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; + + background: #6a7dfe; + background: -webkit-linear-gradient(left, #21d4fd, #b721ff); + background: -o-linear-gradient(left, #21d4fd, #b721ff); + background: -moz-linear-gradient(left, #21d4fd, #b721ff); + background: linear-gradient(left, #21d4fd, #b721ff); +} + +.focus-input100::after { + font-family: Poppins-Regular; + font-size: 15px; + color: #999999; + line-height: 1.2; + + content: attr(data-placeholder); + display: block; + width: 100%; + position: absolute; + top: 16px; + left: 0px; + padding-left: 5px; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.input100:focus + .focus-input100::after { + top: -15px; +} + +.input100:focus + .focus-input100::before { + width: 100%; +} + +.has-val.input100 + .focus-input100::after { + top: -15px; +} + +.has-val.input100 + .focus-input100::before { + width: 100%; +} + +/*---------------------------------------------*/ +.btn-show-pass { + font-size: 15px; + color: #999999; + + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + align-items: center; + position: absolute; + height: 100%; + top: 0; + right: 0; + padding-right: 5px; + cursor: pointer; + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.btn-show-pass:hover { + color: #6a7dfe; + color: -webkit-linear-gradient(left, #21d4fd, #b721ff); + color: -o-linear-gradient(left, #21d4fd, #b721ff); + color: -moz-linear-gradient(left, #21d4fd, #b721ff); + color: linear-gradient(left, #21d4fd, #b721ff); +} + +.btn-show-pass.active { + color: #6a7dfe; + color: -webkit-linear-gradient(left, #21d4fd, #b721ff); + color: -o-linear-gradient(left, #21d4fd, #b721ff); + color: -moz-linear-gradient(left, #21d4fd, #b721ff); + color: linear-gradient(left, #21d4fd, #b721ff); +} + + + +/*------------------------------------------------------------------ +[ Button ]*/ +.container-login100-form-btn { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + justify-content: center; + padding-top: 13px; +} + +.wrap-login100-form-btn { + width: 100%; + display: block; + position: relative; + z-index: 1; + border-radius: 25px; + overflow: hidden; + margin: 0 auto; +} + +.login100-form-bgbtn { + position: absolute; + z-index: -1; + width: 300%; + height: 100%; + background: #a64bf4; + background: -webkit-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: -o-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: -moz-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + background: linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff); + top: 0; + left: -100%; + + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; +} + +.login100-form-btn { + font-family: Poppins-Medium; + font-size: 15px; + color: #fff; + line-height: 1.2; + text-transform: uppercase; + + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + justify-content: center; + align-items: center; + padding: 0 20px; + width: 100%; + height: 50px; + outline: none !important; + border: none; + background: transparent; +} + +.login100-form-btn:hover { + cursor: pointer; +} + +.wrap-login100-form-btn:hover .login100-form-bgbtn { + left: 0; +} + + +/*------------------------------------------------------------------ +[ Responsive ]*/ + +@media (max-width: 576px) { + .wrap-login100 { + padding: 77px 15px 33px 15px; + } +} + + + +/*------------------------------------------------------------------ +[ Alert validate ]*/ + +.validate-input { + position: relative; +} + +.alert-validate::before { + content: attr(data-validate); + position: absolute; + max-width: 70%; + background-color: #fff; + border: 1px solid #c80000; + border-radius: 2px; + padding: 4px 25px 4px 10px; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + right: 0px; + pointer-events: none; + + font-family: Poppins-Regular; + color: #c80000; + font-size: 13px; + line-height: 1.4; + text-align: left; + + visibility: hidden; + opacity: 0; + + -webkit-transition: opacity 0.4s; + -o-transition: opacity 0.4s; + -moz-transition: opacity 0.4s; + transition: opacity 0.4s; +} + +.alert-validate::after { + content: "\f06a"; + font-family: FontAwesome; + font-size: 16px; + color: #c80000; + + display: block; + position: absolute; + background-color: #fff; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + right: 5px; +} + +.alert-validate:hover:before { + visibility: visible; + opacity: 1; +} + +@media (max-width: 992px) { + .alert-validate::before { + visibility: visible; + opacity: 1; + } +} + +/** util **/ +.p-b-26 {padding-bottom: 26px;} +.p-b-48 {padding-bottom: 48px;} +.p-t-115 {padding-top: 115px;} + +/**font**/ +/* .zmdi { + display: inline-block; + font: normal normal normal 14px/1 'Material-Design-Iconic-Font'; + font-size: 14px; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.zmdi-font::before { + content: '\f16a'; +} +.login100-form-title i { + font-size: 60px; +} */ +