64850858
2021-07-19 77e3e0878f9ffe8881bc8b168cc4173257c707df
修复云端录像查看
7个文件已修改
74 ■■■■■ 已修改文件
pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/wvp.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/CloudRecord.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/CloudRecordDetail.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/StreamProxyList.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -10,8 +10,8 @@
    </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>
@@ -44,7 +44,7 @@
    <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>
        <!-- 依赖版本 -->
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -194,7 +194,7 @@
                mediaConfig.setId(zlmServerConfig.getGeneralMediaServerId());
                mediaConfig.setCreateTime(now);
                mediaConfig.setUpdateTime(now);
                serverItem = mediaConfig;
                serverItem = mediaConfig.getMediaSerItem();
                mediaServerMapper.add(mediaConfig);
            }else {
                // 一个新的zlm接入wvp
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
@@ -4,6 +4,7 @@
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;
@@ -47,9 +48,18 @@
    })
    @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;
    }
src/main/resources/wvp.sqlite
Binary files differ
web_src/src/components/CloudRecord.vue
@@ -8,12 +8,12 @@
        <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>
@@ -52,7 +52,7 @@
            :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>
@@ -70,7 +70,7 @@
        data() {
            return {
        mediaServerList: [], // 滅体节点列表
        mediaServer: null, // 媒体服务
        mediaServerId: null, // 媒体服务
        recordList: [], // 设备列表
        chooseRecord: null, // 媒体服务
@@ -111,9 +111,9 @@
      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();
          }
        })
@@ -122,7 +122,7 @@
        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
@@ -142,7 +142,8 @@
      },
      chooseMediaChange(val){
          console.log(val)
          this.mediaServer = val;
          this.total = 0;
          this.recordList = [];
          this.getRecordList();
      },
      showRecordDetail(row){
web_src/src/components/CloudRecordDetail.vue
@@ -110,7 +110,7 @@
        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`,
@@ -238,7 +238,7 @@
        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,
@@ -263,7 +263,7 @@
          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)
        }
@@ -312,7 +312,7 @@
        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
@@ -331,7 +331,7 @@
        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
@@ -380,7 +380,7 @@
        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,
@@ -405,7 +405,7 @@
        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,
          }
web_src/src/components/StreamProxyList.vue
@@ -211,10 +211,19 @@
                    }
                }).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;