package com.ard.web.controller.vtdu;
|
|
import com.ard.common.core.controller.BaseController;
|
import com.ard.common.core.domain.AjaxResult;
|
import com.ard.common.core.page.TableDataInfo;
|
import com.ard.vtdu.domain.ArdVtdu;
|
import com.ard.vtdu.domain.Conf;
|
import com.ard.vtdu.service.IMediaMTXService;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
import javax.annotation.Resource;
|
import java.util.Arrays;
|
|
/**
|
* @Description: mediaMTX流媒体业务
|
* @ClassName: controller
|
* @Author: 刘苏义
|
* @Date: 2023年07月13日9:26
|
* @Version: 1.0
|
**/
|
@RestController
|
@Api(tags = "mediaMTX接口")
|
@RequestMapping("/mediamtx/media")
|
public class MediaMTXController extends BaseController {
|
|
@Resource
|
private IMediaMTXService mediaService;
|
|
/**
|
* 增加通道
|
*/
|
@PostMapping()
|
@ApiOperation("增加通道")
|
@ApiOperationSupport(includeParameters = {"ardVtdu.name", "ardVtdu.rtspSource", "ardVtdu.mode", "ardVtdu.isCode", "ardVtdu.isRecord"}, order = 1)
|
public AjaxResult addPath(@RequestBody ArdVtdu ardVtdu) {
|
if (StringUtils.isEmpty(ardVtdu.getName())) {
|
return AjaxResult.error("通道名称不能为空");
|
}
|
if (StringUtils.isEmpty(ardVtdu.getRtspSource())) {
|
return AjaxResult.error("rtsp地址不能为空");
|
}
|
return AjaxResult.success(mediaService.addPath(ardVtdu));
|
}
|
|
|
/**
|
* 修改通道
|
*/
|
@ApiOperation("修改通道")
|
@ApiOperationSupport(includeParameters = {"ardVtdu.name", "ardVtdu.rtspSource", "ardVtdu.mode", "ardVtdu.isCode", "ardVtdu.isRecord"}, order = 2)
|
@PutMapping
|
public AjaxResult edit(@RequestBody ArdVtdu ardVtdu) {
|
return AjaxResult.success(mediaService.editPath(ardVtdu));
|
}
|
|
/**
|
* 移除通道
|
*/
|
@DeleteMapping("/path/{names}")
|
@ApiOperation("移除通道")
|
@ApiOperationSupport(order = 3)
|
|
public AjaxResult removePath(@PathVariable String[] names) {
|
mediaService.removePath(names);
|
return AjaxResult.success();
|
}
|
|
/**
|
* 移除Webrtc拉流
|
*/
|
@ApiOperation("移除Webrtc拉流")
|
@ApiOperationSupport(order = 4)
|
@DeleteMapping("/webrtc/{sessionIds}")
|
public AjaxResult removeWebrtcPullStreamSession(@PathVariable String[] sessionIds) {
|
Arrays.stream(sessionIds).forEach(sessionId -> mediaService.kickWebrtcSession(sessionId));
|
return AjaxResult.success();
|
}
|
|
/**
|
* 移除Rtmp拉流
|
*/
|
@ApiOperation("移除Rtmp拉流")
|
@ApiOperationSupport(order = 4)
|
@DeleteMapping("/rtmp/{sessionIds}")
|
public AjaxResult removeRtmpPullStreamSession(@PathVariable String[] sessionIds) {
|
Arrays.stream(sessionIds).forEach(sessionId -> mediaService.kickRtmpSession(sessionId));
|
return AjaxResult.success();
|
}
|
|
/**
|
* 移除Rtsp拉流
|
*/
|
@ApiOperation("移除Rtsp拉流")
|
@ApiOperationSupport(order = 4)
|
@DeleteMapping("/rtsp/{sessionIds}")
|
public AjaxResult removeRtspPullStreamSession(@PathVariable String[] sessionIds) {
|
Arrays.stream(sessionIds).forEach(sessionId -> mediaService.kickRtspSession(sessionId));
|
return AjaxResult.success();
|
}
|
|
|
/**
|
* 获取当前通道列表
|
*/
|
@GetMapping("/path/list")
|
@ApiOperation("获取当前通道列表")
|
@ApiOperationSupport(order = 5)
|
public TableDataInfo getPaths(Integer pageNum, Integer pageSize) {
|
startPage();
|
return getDataTable(mediaService.paths(pageNum, pageSize));
|
}
|
|
/**
|
* 按ID查询Webrtc拉流详情
|
*/
|
@GetMapping("/getWebrtcSessionById")
|
@ApiOperation("按ID查询Webrtc拉流详情")
|
public AjaxResult getWebrtcSessionById(String sessionId) {
|
return AjaxResult.success(mediaService.getWebrtcSessionById(sessionId));
|
}
|
|
/**
|
* 获取推流列表
|
*/
|
@GetMapping("/pushList")
|
@ApiOperation("获取推流列表")
|
@ApiOperationSupport(order = 6)
|
public TableDataInfo getPushStreamList(Integer pageNum, Integer pageSize) {
|
TableDataInfo tableDataInfo = mediaService.getPushStreamList(pageNum, pageSize);
|
return tableDataInfo;
|
}
|
|
/**
|
* 获取WebRtc拉流列表
|
*/
|
|
@GetMapping("/getPullWebrtcStreamList")
|
@ApiOperation("获取WebRtc拉流列表")
|
@ApiOperationSupport(order = 7)
|
public TableDataInfo getPullWebrtcStreamList(Integer pageNum, Integer pageSize) {
|
return mediaService.getPullWebrtcStreamList(pageNum, pageSize);
|
}
|
|
/**
|
* 获取rtsp拉流列表
|
*/
|
|
@GetMapping("/getPullRtspStreamList")
|
@ApiOperation("获取rtsp拉流列表")
|
@ApiOperationSupport(order = 8)
|
public TableDataInfo getPullRtspStreamList(Integer pageNum, Integer pageSize) {
|
return mediaService.getPullRtspStreamList(pageNum, pageSize);
|
|
}
|
|
/**
|
* 获取rtmp拉流列表
|
*/
|
@GetMapping("/getPullRtmpStreamList")
|
@ApiOperation("获取rtmp拉流列表")
|
@ApiOperationSupport(order = 9)
|
public TableDataInfo getPullRtmpStreamList(Integer pageNum, Integer pageSize) {
|
return mediaService.getPullRtmpStreamList(pageNum, pageSize);
|
}
|
|
//配置录像
|
@PostMapping("/setRecord")
|
@ApiOperation("配置录像")
|
@ApiOperationSupport(includeParameters = {"conf.name", "conf.sourceOnDemand", "conf.record"})
|
public AjaxResult setRecord(@RequestBody Conf conf) {
|
return AjaxResult.success(mediaService.setRecord(conf));
|
}
|
|
//获取全部录像分段列表
|
@GetMapping("/getRecordingList")
|
@ApiOperation("获取全部录像分段列表")
|
public AjaxResult getRecordingList(Integer pageNum, Integer pageSize) {
|
return AjaxResult.success(mediaService.recordingList(pageNum, pageSize));
|
}
|
|
//通过路径名获取录像分段列表
|
@GetMapping("/getRecordingListByName/{name}")
|
@ApiOperation("通过路径名获取录像分段列表")
|
public AjaxResult getRecordingListByName(@PathVariable String name) {
|
return AjaxResult.success(mediaService.recordingListByName(name));
|
}
|
|
//删除录像
|
@DeleteMapping("/deleteRecording")
|
@ApiOperation("删除录像")
|
public AjaxResult deleteRecording(String name, String start) {
|
return AjaxResult.success(mediaService.deleteSegment(name, start));
|
}
|
|
//获取通道配置
|
@GetMapping("/{name}")
|
@ApiOperation("获取通道配置")
|
public AjaxResult getPathConfig(@PathVariable String name) {
|
return AjaxResult.success(mediaService.getPathConfig(name));
|
}
|
|
//获取所有通道配置列表
|
@GetMapping("/getRecordConfList")
|
@ApiOperation("获取所有通道配置列表")
|
public AjaxResult getRecordConfList(Integer pageNum, Integer pageSize) {
|
return AjaxResult.success(mediaService.getPathConfigs(pageNum, pageSize));
|
}
|
}
|