‘liusuyi’
2023-07-15 29f21c70e977baf0bc2c4a2c37ba3096292c1388
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
package com.ruoyi.media.controller;
 
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
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")
public class MediaController extends BaseController {
    @Resource
    private IMediaService mediaService;
 
    @PostMapping("/add")
    @ApiOperation("增加转码")
    @ApiOperationSupport(includeParameters = {"streamInfo.name","streamInfo.rtspSource"})
    public AjaxResult addPath(@RequestBody StreamInfo streamInfo) {
        String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource());
        return AjaxResult.success(rtsp);
    }
 
    @PostMapping("/remove")
    @ApiOperation("移除转码")
    @ApiOperationSupport(includeParameters = {"streamInfo.name"})
    public AjaxResult removePath(@RequestBody StreamInfo streamInfo) {
        mediaService.removePath(streamInfo.getName());
        return AjaxResult.success();
    }
 
    @GetMapping("/getPaths")
    @ApiOperation("获取当前转码列表")
    public AjaxResult getPaths() {
        return AjaxResult.success(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:add')")
    @PostMapping
    @ApiOperationSupport(includeParameters = {"streamInfo.name"})
    public AjaxResult add(@RequestBody StreamInfo streamInfo) throws InterruptedException {
        String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource());
        return AjaxResult.success(rtsp);
    }
    /**
     * 删除流媒体推流
     */
    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
    @DeleteMapping("/path/{name}")
    public AjaxResult remove(@PathVariable String name) {
        mediaService.removePath(name);
        return AjaxResult.success();
    }
    /**
     * 删除流媒体拉流
     */
    @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());
    }
}