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.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) { String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode()); 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()); 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()); } }