diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index af9030b9..13b83d16 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -357,11 +357,7 @@ public class SIPCommander implements ISIPCommander { ClientTransaction transaction = transmitRequest(device, request, errorEvent); streamSession.put(streamId, transaction); - DeviceChannel deviceChannel = storager.queryChannel(device.getDeviceId(), channelId); - if (deviceChannel != null) { - deviceChannel.setStreamId(streamId); - storager.updateChannel(device.getDeviceId(), deviceChannel); - } + } catch ( SipException | ParseException | InvalidArgumentException e) { diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index 072b1bfe..eecc0bb5 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -23,7 +23,8 @@ public interface DeviceChannelMapper { "SET name=#{name}, manufacture=#{manufacture}, model=#{model}, owner=#{owner}, civilCode=#{civilCode}, " + "block=#{block}, address=#{address}, parental=#{parental}, parentId=#{parentId}, safetyWay=#{safetyWay}, " + "registerWay=#{registerWay}, certNum=#{certNum}, certifiable=#{certifiable}, errCode=#{errCode}, secrecy=#{secrecy}, " + - "ipAddress=#{ipAddress}, port=#{port}, password=#{password}, PTZType=#{PTZType}, status=#{status} " + + "ipAddress=#{ipAddress}, port=#{port}, password=#{password}, PTZType=#{PTZType}, status=#{status}, streamId=#{streamId}, " + + "hasAudio=#{hasAudio}" + "WHERE deviceId=#{deviceId} AND channelId=#{channelId}") int update(DeviceChannel channel); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java index 6ce0868f..f4bdd2b7 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.MediaServerConfig; +import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -37,6 +38,12 @@ public class PlayServiceImpl implements IPlayService { msg.setId(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid); StreamInfo streamInfo = onPublishHandler(resonse, deviceId, channelId, uuid); if (streamInfo != null) { + DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId); + if (deviceChannel != null) { + deviceChannel.setStreamId(streamInfo.getStreamId()); + storager.updateChannel(deviceId, deviceChannel); + } + redisCatchStorage.startPlay(streamInfo); msg.setData(JSON.toJSONString(streamInfo)); resultHolder.invokeResult(msg); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 6cee0cb6..7b98bd10 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -20,13 +20,20 @@ spring: timeout: 10000 # [不可用] jdbc数据库配置, 暂不支持 datasource: + # name: eiot + # url: jdbc:mysql://127.0.0.1:3306/eiot?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true + # username: + # password: + # type: com.alibaba.druid.pool.DruidDataSource + # driver-class-name: com.mysql.jdbc.Driver name: eiot - url: jdbc:mysql://127.0.0.1:3306/eiot?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true + url: jdbc:sqlite::resource:wvp.sqlite username: password: type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.mysql.jdbc.Driver - + driver-class-name: org.sqlite.JDBC + max-active: 1 + min-idle: 1 # [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口 server: diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite index ab68634c..023ea355 100644 Binary files a/src/main/resources/wvp.sqlite and b/src/main/resources/wvp.sqlite differ diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index 2867d7b7..e221974b 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -19,12 +19,12 @@ - 在线状态: + 在线状态: - + 自动刷新 @@ -56,7 +56,7 @@ 播放 - 停止 + 停止 查看 设备录象 @@ -98,13 +98,17 @@ export default { count: parseInt(this.$route.params.count), total: 0, beforeUrl: "/videoList", - isLoging: false + isLoging: false, + autoList: false }; }, mounted() { this.initData(); - this.updateLooper = setInterval(this.initData, 1000); + if (this.autoList) { + this.updateLooper = setInterval(this.initData, 1500); + } + }, destroyed() { this.$destroy('videojs'); @@ -179,12 +183,11 @@ export default { let deviceId = this.deviceId; this.isLoging = true; let channelId = itemData.channelId; - let getEncoding = itemData.hasAudio ? '1' : '0' - console.log("通知设备推流1:" + deviceId + " : " + channelId + ":" + getEncoding); + console.log("通知设备推流1:" + deviceId + " : " + channelId ); let that = this; this.$axios({ method: 'get', - url: '/api/play/' + deviceId + '/' + channelId + '?getEncoding=' + getEncoding + url: '/api/play/' + deviceId + '/' + channelId }).then(function (res) { console.log(res.data) let streamId = res.data.streamId; @@ -258,7 +261,7 @@ export default { }) .then(function (res) { that.total = res.data.total; - that.deviceChannelList = res.data.data; + that.deviceChannelList = res.data.list; // 防止出现表格错位 that.$nextTick(() => { that.$refs.channelListTable.doLayout(); @@ -283,6 +286,13 @@ export default { }).then(function (res) { console.log(JSON.stringify(res)); }); + }, + autoListChange: function () { + if (this.autoList) { + this.updateLooper = setInterval(this.initData, 1500); + }else{ + window.clearInterval(this.updateLooper); + } } }