| | |
| | | </parent> |
| | | |
| | | <groupId>com.genersoft</groupId> |
| | | <artifactId>wvp-gb28181</artifactId> |
| | | <version>2.0.0</version> |
| | | <artifactId>wvp-pro</artifactId> |
| | | <version>2.0</version> |
| | | <name>web video platform</name> |
| | | |
| | | <repositories> |
| | |
| | | |
| | | <properties> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> |
| | | <maven.build.timestamp.format>MMddHHmm</maven.build.timestamp.format> |
| | | <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> |
| | | |
| | | <!-- 依赖版本 --> |
| | |
| | | mediaConfig.setId(zlmServerConfig.getGeneralMediaServerId()); |
| | | mediaConfig.setCreateTime(now); |
| | | mediaConfig.setUpdateTime(now); |
| | | serverItem = mediaConfig; |
| | | serverItem = mediaConfig.getMediaSerItem(); |
| | | mediaServerMapper.add(mediaConfig); |
| | | }else { |
| | | // 一个新的zlm接入wvp |
| | |
| | | import com.genersoft.iot.vmp.service.IStreamPushService; |
| | | import com.genersoft.iot.vmp.service.IMediaService; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | |
| | | }) |
| | | @GetMapping(value = "/stream_info_by_app_and_stream") |
| | | @ResponseBody |
| | | public StreamInfo getStreamInfoByAppAndStream(@RequestParam String app, @RequestParam String stream, @RequestParam String mediaServerId){ |
| | | |
| | | return mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream,mediaServerId); |
| | | public WVPResult<StreamInfo> getStreamInfoByAppAndStream(@RequestParam String app, @RequestParam String stream, @RequestParam String mediaServerId){ |
| | | StreamInfo streamInfoByAppAndStreamWithCheck = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId); |
| | | WVPResult<StreamInfo> result = new WVPResult<>(); |
| | | if (streamInfoByAppAndStreamWithCheck != null){ |
| | | result.setCode(0); |
| | | result.setMsg("scccess"); |
| | | result.setData(streamInfoByAppAndStreamWithCheck); |
| | | }else { |
| | | result.setCode(-1); |
| | | result.setMsg("fail"); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | |
| | | <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> |
| | | <span style="font-size: 1rem; font-weight: bold;">云端录像</span> |
| | | <div style="position: absolute; right: 5rem; top: 0.3rem;"> |
| | | 节点选择: <el-select size="mini" @change="chooseMediaChange" style="width: 16rem; margin-right: 1rem;" v-model="mediaServer" placeholder="请选择" default-first-option> |
| | | 节点选择: <el-select size="mini" @change="chooseMediaChange" style="width: 16rem; margin-right: 1rem;" v-model="mediaServerId" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in mediaServerList" |
| | | :key="item.id" |
| | | :label="item.id + '( ' + item.streamIp + ' )'" |
| | | :value="item"> |
| | | :label="item.id" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | <cloud-record-detail ref="cloudRecordDetail" v-if="recordDetail" :recordFile="chooseRecord" :mediaServer="mediaServer" ></cloud-record-detail> |
| | | <cloud-record-detail ref="cloudRecordDetail" v-if="recordDetail" :recordFile="chooseRecord" :mediaServerId="mediaServerId" ></cloud-record-detail> |
| | | </el-main> |
| | | </el-container> |
| | | </div> |
| | |
| | | data() { |
| | | return { |
| | | mediaServerList: [], // 滅体节点列表 |
| | | mediaServer: null, // 媒体服务 |
| | | mediaServerId: null, // 媒体服务 |
| | | recordList: [], // 设备列表 |
| | | chooseRecord: null, // 媒体服务 |
| | | |
| | |
| | | getMediaServerList: function (){ |
| | | let that = this; |
| | | that.mediaServerObj.getMediaServerList((data)=>{ |
| | | that.mediaServerList = data; |
| | | that.mediaServerList = data.data; |
| | | if (that.mediaServerList.length > 0) { |
| | | that.mediaServer = that.mediaServerList[0] |
| | | that.mediaServerId = that.mediaServerList[0].id |
| | | that.getRecordList(); |
| | | } |
| | | }) |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/list`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/list`, |
| | | params: { |
| | | page: that.currentPage, |
| | | count: that.count |
| | |
| | | }, |
| | | chooseMediaChange(val){ |
| | | console.log(val) |
| | | this.mediaServer = val; |
| | | this.total = 0; |
| | | this.recordList = []; |
| | | this.getRecordList(); |
| | | }, |
| | | showRecordDetail(row){ |
| | |
| | | components: { |
| | | uiHeader, player |
| | | }, |
| | | props: ['recordFile', 'mediaServer', 'dateFiles'], |
| | | props: ['recordFile', 'mediaServerId', 'dateFiles'], |
| | | data() { |
| | | return { |
| | | basePath: process.env.NODE_ENV === 'development'?`${location.origin}/debug/zlm`:`${location.origin}/zlm`, |
| | |
| | | let that = this; |
| | | that.$axios({ |
| | | method: 'get', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/file/list`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/file/list`, |
| | | params: { |
| | | app: that.recordFile.app, |
| | | stream: that.recordFile.stream, |
| | |
| | | this.videoUrl = ""; |
| | | }else { |
| | | // TODO 控制列表滚动条 |
| | | this.videoUrl = `${this.basePath}/${this.mediaServer.recordAppName}/${this.recordFile.app}/${this.recordFile.stream}/${this.chooseDate}/${this.choosedFile}` |
| | | this.videoUrl = `${this.basePath}/${this.mediaServerId}/record/${this.recordFile.app}/${this.recordFile.stream}/${this.chooseDate}/${this.choosedFile}` |
| | | console.log(this.videoUrl) |
| | | } |
| | | |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'delete', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/delete`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/delete`, |
| | | params: { |
| | | page: that.currentPage, |
| | | count: that.count |
| | |
| | | that.dateFilesObj = {}; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/date/list`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/date/list`, |
| | | params: { |
| | | app: that.recordFile.app, |
| | | stream: that.recordFile.stream |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/file/download/task/add`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/file/download/task/add`, |
| | | params: { |
| | | app: that.recordFile.app, |
| | | stream: that.recordFile.stream, |
| | |
| | | let that = this; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/record_proxy/${that.mediaServer.generalMediaServerId}/api/record/file/download/task/list`, |
| | | url:`/record_proxy/${that.mediaServerId}/api/record/file/download/task/list`, |
| | | params: { |
| | | isEnd: isEnd, |
| | | } |
| | |
| | | } |
| | | }).then(function (res) { |
| | | that.getListLoading = false; |
| | | that.$refs.devicePlayer.openDialog("streamPlay", null, null, { |
| | | streamInfo: res.data, |
| | | hasAudio: true |
| | | }); |
| | | if (res.data.code === 0) { |
| | | that.$refs.devicePlayer.openDialog("streamPlay", null, null, { |
| | | streamInfo: res.data.data, |
| | | hasAudio: true |
| | | }); |
| | | }else { |
| | | that.$message({ |
| | | showClose: true, |
| | | message: "获取地址失败:" + res.data.msg, |
| | | type: "error", |
| | | }); |
| | | } |
| | | |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | that.getListLoading = false; |