‘liusuyi’
2023-07-29 2d68f48eeb8f874240f7b02ff20dbf1e784271b4
ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
@@ -2,16 +2,18 @@
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.media.domain.MediaInfo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.media.domain.StreamInfo;
import com.ruoyi.media.service.IMediaService;
import com.ruoyi.media.service.impl.MediaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -24,39 +26,67 @@
 **/
@RestController
@Api(tags = "流媒体接口")
@RequestMapping("/media/stream")
@Anonymous
public class MediaController {
public class MediaController extends BaseController {
    @Resource
    private IMediaService mediaService;
    @PostMapping("/add")
    @PostMapping()
    @ApiOperation("增加转码")
    public AjaxResult addPath(@RequestBody MediaInfo mediaInfo) {
        String rtsp = mediaService.addPath(mediaInfo.getCameraId(), mediaInfo.getRtspPath());
    @PreAuthorize("@ss.hasPermi('media:stream:add')")
    @ApiOperationSupport(includeParameters = {"streamInfo.name", "streamInfo.rtspSource", "streamInfo.mode"})
    public AjaxResult addPath(@RequestBody StreamInfo streamInfo) {
        String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode());
        return AjaxResult.success(rtsp);
    }
    @PostMapping("/remove")
    /**
     * 获取转码详细信息
     */
    @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());
        return AjaxResult.success(rtsp);
    }
    @DeleteMapping("/path/{names}")
    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
    @ApiOperation("移除转码")
    @ApiOperationSupport(includeParameters={"mediaInfo.cameraId"})
    public AjaxResult removePath(@RequestBody MediaInfo mediaInfo) {
        mediaService.removePath(mediaInfo.getCameraId());
    public AjaxResult removePath( @PathVariable String[] names) {
        mediaService.removePath(names);
        return AjaxResult.success();
    }
    @GetMapping("/getPaths")
    @GetMapping("/path/list")
    @ApiOperation("获取当前转码列表")
    public AjaxResult getPaths() {
        return AjaxResult.success(mediaService.paths());
    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) {
@@ -68,9 +98,35 @@
    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());
    }
}