whycxzp
2024-12-31 44fad38cf4808c535c6d15f5366aa7cd09bfc3ee
摄像头视频流相关接口
1个文件已删除
3个文件已添加
192 ■■■■ 已修改文件
src/main/java/com/whyc/controller/VideoController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/schedule/SNMPScheduleService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/schedule/VideoScheduleService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/VideoService.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/VideoController.java
New file
@@ -0,0 +1,37 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.service.VideoService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("video")
@Api(tags = "摄像头视频")
public class VideoController {
    @Autowired
    private VideoService service;
    @RequestMapping("getVideoStreamIds")
    public Response<List> getVideoStreamIds() {
        List<String> videoStreamIds = service.getVideoStreamIds();
        return new Response<List>().set(1, videoStreamIds, "获取摄像头视频流成功");
    }
    @RequestMapping("startRecord")
    public Response<String> startRecord(String streamId) {
        service.startRecord(streamId);
        return new Response<String>().set(1, "开始录制视频流成功");
    }
    @RequestMapping("stopRecord")
    public Response<String> stopRecord(String streamId) {
        service.stopRecord(streamId);
        return new Response<String>().set(1, "停止录制视频流成功");
    }
}
src/main/java/com/whyc/schedule/SNMPScheduleService.java
File was deleted
src/main/java/com/whyc/schedule/VideoScheduleService.java
New file
@@ -0,0 +1,33 @@
package com.whyc.schedule;
import com.whyc.factory.ThreadPoolExecutorFactory;
import com.whyc.service.VideoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@EnableScheduling
@Component
public class VideoScheduleService {
    @Autowired
    private VideoService service;
    /**凌晨0点执行一次,录制视频流*/
    @Scheduled(cron = "0 0 0 * * ? ")
    public void getAndSaveB247(){
        ThreadPoolExecutorFactory.getPoolExecutor().execute(()->{
            //service.getAndSaveB247();
        });
    }
    /**凌晨0点0分2秒执行一次,停止上次的录制视频流*/
    @Scheduled(cron = "2 0 0 * * ? ")
    public void getAndSaveA250(){
        ThreadPoolExecutorFactory.getPoolExecutor().execute(()->{
            //service.getAndSaveA250();
        });
    }
}
src/main/java/com/whyc/service/VideoService.java
New file
@@ -0,0 +1,90 @@
package com.whyc.service;
import com.whyc.dto.Response;
import com.whyc.util.ActionUtil;
import com.whyc.util.HttpUtil;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.whyc.util.HttpUtil.urlEncode;
/**
 * 视频相关服务封装
 */
@Service
public class VideoService {
    /**
     * 获取视频流id
     * @return
     */
    public List<String> getVideoStreamIds() {
        Map<String, Object> params = new HashMap<>();//组合参数
        params.put("pageIndex", 1);
        params.put("pageSize", 1);
        String queryParams = urlEncode(params);
        String httpUrl ="http://192.168.10.133:9092/index/api/getMediaList";
        Response response = HttpUtil.doGet(httpUrl, queryParams);
        Integer httpResponseCode = response.getCode();
        String responseJson = (String) response.getData();
        if(httpResponseCode == 1) { //请求成功
            Response responseHttp = HttpUtil.getGson().fromJson(responseJson, Response.class);
            if(responseHttp.getCode() == 1) {
                //TODO 需要实际调试,目前返回的数据结构未确定
                return HttpUtil.getGson().fromJson(responseHttp.getData().toString(), List.class);
            }else{
                return null;
            }
        }else{
            return null;
        }
    }
    public void startRecord(String streamId){
        Map<String, Object> params = new HashMap<>();//组合参数
        params.put("secret", "TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj");
        params.put("type", 1);
        params.put("vhost", "__defaultVhost__");
        params.put("app", "rtp");
        params.put("stream", streamId);
        String queryParams = urlEncode(params);
        String httpUrl ="http://192.168.10.133:9092/index/api/startRecord";
        Response response = HttpUtil.doGet(httpUrl, queryParams);
        Integer code = response.getCode();
        String responseJson = (String) response.getData();
        if(code == 1) { //请求成功
            Response responseHttp = HttpUtil.getGson().fromJson(responseJson, Response.class);
            if(responseHttp.getCode() == 0 && responseHttp.getMsg().equals("success")) { //请求成功
            }else{
                System.out.println(responseHttp.getMsg());
            }
        }
    }
    public void stopRecord(String streamId){
        Map<String, Object> params = new HashMap<>();//组合参数
        params.put("secret", "TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj");
        params.put("type", 1);
        params.put("vhost", "__defaultVhost__");
        params.put("app", "rtp");
        params.put("stream", streamId);
        String queryParams = urlEncode(params);
        String httpUrl ="http://192.168.10.133:9092/index/api/stopRecord";
        Response response = HttpUtil.doGet(httpUrl, queryParams);
        Integer code = response.getCode();
        String responseJson = (String) response.getData();
        if(code == 1) { //请求成功
            Response responseHttp = HttpUtil.getGson().fromJson(responseJson, Response.class);
            if(responseHttp.getCode() == 0 && responseHttp.getMsg().equals("success")) { //请求成功
            }else{
                System.out.println(responseHttp.getMsg());
            }
        }
    }
}