‘liusuyi’
2023-08-12 e82cfae81d016a5171224f1358eba663d2f60c68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.ruoyi.media.controller;
 
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.media.domain.StreamInfo;
import com.ruoyi.media.service.IMediaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
 
/**
 * @Description:
 * @ClassName: controller
 * @Author: 刘苏义
 * @Date: 2023年07月13日9:26
 * @Version: 1.0
 **/
@RestController
@Api(tags = "流媒体接口")
@RequestMapping("/media/stream")
@Anonymous
public class MediaController extends BaseController {
    @Resource
    private IMediaService mediaService;
 
    @PostMapping()
    @ApiOperation("增加转码")
    @PreAuthorize("@ss.hasPermi('media:stream:add')")
    @ApiOperationSupport(includeParameters = {"streamInfo.name", "streamInfo.rtspSource", "streamInfo.mode"})
    public AjaxResult addPath(@RequestBody StreamInfo streamInfo) {
        if(StringUtils.isEmpty(streamInfo.getName()))
        {
            return AjaxResult.error("通道名称不能为空");
        }
        if(StringUtils.isEmpty(streamInfo.getRtspSource()))
        {
            return AjaxResult.error("rtsp地址不能为空");
        }
        String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(),streamInfo.getIsCode());
        return AjaxResult.success(rtsp);
    }
    /**
     * 获取转码详细信息
     */
    @ApiOperation("获取转码详细信息")
    @GetMapping(value = "/{name}")
    public AjaxResult getInfo(@PathVariable("name") String name) {
        return success(mediaService.getPathInfo(name));
    }
    /**
     * 修改转码
     */
    @ApiOperation("修改转码")
    @PreAuthorize("@ss.hasPermi('media:stream:edit')")
    @PutMapping
    public AjaxResult edit(@RequestBody StreamInfo streamInfo) {
        mediaService.removePath(new String[]{streamInfo.getName()});
        String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(),streamInfo.getIsCode());
        return AjaxResult.success(rtsp);
    }
 
    @DeleteMapping("/path/{names}")
    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
    @ApiOperation("移除转码")
    public AjaxResult removePath( @PathVariable String[] names) {
        mediaService.removePath(names);
        return AjaxResult.success();
    }
 
    @GetMapping("/path/list")
    @ApiOperation("获取当前转码列表")
    public TableDataInfo getPaths() {
        startPage();
        return getDataTable(mediaService.paths());
    }
 
    @GetMapping("/getRtspSessions")
    @ApiOperation("获取rtsp会话列表")
    public AjaxResult getRtspSessions() {
        return AjaxResult.success(mediaService.rtspsessions());
    }
 
    @GetMapping("/getRtspConns")
    @ApiOperation("获取rtsp连接列表")
    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());
    }
 
    @PreAuthorize("@ss.hasPermi('media:stream:list')")
    @GetMapping("/pushList")
    @ApiOperation("获取推流列表")
    public TableDataInfo getPushStreamList() {
        startPage();
        return getDataTable(mediaService.getPushStreamList());
    }
 
    /**
     * 删除流媒体拉流
     */
    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
    @DeleteMapping("/{id}")
    public AjaxResult removePullStreamSession(@PathVariable String id) {
        return AjaxResult.success(mediaService.kickRtspSession(id));
    }
 
    @PreAuthorize("@ss.hasPermi('media:stream:list')")
    @GetMapping("/pullList")
    @ApiOperation("获取拉流列表")
    public TableDataInfo getPullStreamList() {
        startPage();
        return getDataTable(mediaService.getPullStreamList());
    }
}