liusuyi
2023-07-14 252e5230703e4355d25274d21b84f2d060907416
提交拉流取流查询接口
已添加2个文件
已修改5个文件
109 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/domain/Items.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/domain/Readers.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/domain/RtspSession.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
@@ -57,4 +57,20 @@
    public AjaxResult getRtspConns() {
        return AjaxResult.success(mediaService.rtspconns());
    }
    @GetMapping("/getRtspSessionById")
    @ApiOperation("按ID查询会话")
    public AjaxResult getRtspSessionById(String sessionId) {
        return AjaxResult.success(mediaService.getRtspSessionById(sessionId));
    }
    @GetMapping("/getPushStreams")
    @ApiOperation("获取推流信息")
    public AjaxResult getPushStreams() {
        return AjaxResult.success(mediaService.getPushStreams());
    }
    @GetMapping("/getPullStreams")
    @ApiOperation("获取拉流信息")
    public AjaxResult getPullStreams() {
        return AjaxResult.success(mediaService.getPullStreams());
    }
}
ard-work/src/main/java/com/ruoyi/media/domain/Items.java
@@ -21,6 +21,7 @@
    private String confName;
    private Conf conf;
    private Source source;
    private List<Readers> readers;
    private boolean sourceReady;
    private List<String> tracks;
ard-work/src/main/java/com/ruoyi/media/domain/Readers.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.media.domain;
import lombok.Data;
/**
 * @ClassName Readers
 * @Description:
 * @Author åˆ˜è‹ä¹‰
 * @Date 2023/7/14 21:04
 * @Version 1.0
 */
@Data
public class Readers {
    private String type;
    private String id;
}
ard-work/src/main/java/com/ruoyi/media/domain/RtspSession.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.media.domain;
import lombok.Data;
import java.util.Date;
/**
 * @ClassName RtspSession
 * @Description:
 * @Author åˆ˜è‹ä¹‰
 * @Date 2023/7/14 21:19
 * @Version 1.0
 */
@Data
public class RtspSession {
    private String cameraId;
    private String id;
    private Date created;
    private String remoteAddr;
    private String state;
    private long bytesReceived;
    private long bytesSent;
}
ard-work/src/main/java/com/ruoyi/media/service/IMediaService.java
@@ -1,5 +1,6 @@
package com.ruoyi.media.service;
import com.ruoyi.media.domain.Items;
import com.ruoyi.media.domain.RtspSession;
import java.util.List;
@@ -10,4 +11,7 @@
    public List<Items>paths();
    public List<Items> rtspconns();
    public List<Items> rtspsessions();
    RtspSession getRtspSessionById(String sessionId);
    List<RtspSession>getPushStreams();
    List<RtspSession>getPullStreams();
}
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -8,6 +8,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
@@ -77,4 +78,48 @@
        JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
        return jsonsRoot.getItems();
    }
    @Override
    public RtspSession getRtspSessionById(String sessionId) {
        String apiUrl="http://"+mediamtxHost+":9997/v2";
        String list = mediaClient.getRtspsessionById(apiUrl,sessionId);
        RtspSession rtspSession = JSONObject.parseObject(list, RtspSession.class);
        return rtspSession;
    }
    @Override
    public List<RtspSession> getPushStreams() {
        List<RtspSession> rtspSessions=new ArrayList<>();
        String apiUrl="http://"+mediamtxHost+":9997/v2";
        String list = mediaClient.paths(apiUrl);
        JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
        List<Items> items = jsonsRoot.getItems();
        for(Items item:items)
        {
            Source source = item.getSource();
            RtspSession rtspSession = getRtspSessionById(source.getId());
            rtspSession.setCameraId(item.getName());
            rtspSessions.add(rtspSession);
        }
        return rtspSessions;
    }
    @Override
    public List<RtspSession> getPullStreams() {
        List<RtspSession> rtspSessions=new ArrayList<>();
        String apiUrl="http://"+mediamtxHost+":9997/v2";
        String list = mediaClient.paths(apiUrl);
        JsonsRoot jsonsRoot = JSONObject.parseObject(list, JsonsRoot.class);
        List<Items> items = jsonsRoot.getItems();
        for(Items item:items)
        {
            List<Readers> readers = item.getReaders();
            for(Readers reader:readers) {
                RtspSession rtspSession = getRtspSessionById(reader.getId());
                rtspSession.setCameraId(item.getName());
                rtspSessions.add(rtspSession);
            }
        }
        return rtspSessions;
    }
}
ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
@@ -47,6 +47,6 @@
    /**
     * æŒ‰id查询rtsp会话
     */
    @Get("{apiUrl}/rtspsessions/get/{id}")
    String rtspsessionsById(@Var("apiUrl") String apiUrl, @Var("id") String id);
    @Get("{apiUrl}/rtspsessions/get/{sessionId}")
    String getRtspsessionById(@Var("apiUrl") String apiUrl, @Var("sessionId") String sessionId);
}