package com.whdc.controller; import com.whdc.dto.ApiResponse; import com.whdc.dto.LoginRequest; import com.whdc.dto.StartStreamRequest; import com.whdc.service.impl.VideoPlayService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/video/play") public class VideoPlayController { @Autowired private VideoPlayService videoPlayService; @PostMapping("/init") public ApiResponse initSDK() { try { boolean result = videoPlayService.initSDK(); return ApiResponse.success("SDK初始化成功", result); } catch (Exception e) { return ApiResponse.error("SDK初始化失败: " + e.getMessage()); } } @PostMapping("/login") public ApiResponse login(@RequestBody LoginRequest request) { try { int logonId = videoPlayService.login( request.getIp(), request.getPort(), request.getUsername(), request.getPassword() ); return ApiResponse.success("登录成功", logonId); } catch (Exception e) { return ApiResponse.error("登录失败: " + e.getMessage()); } } @PostMapping("/stream/start") public ApiResponse startPlay(@RequestBody StartStreamRequest request) { try { // videoPlayService.initSDK(); // int logonId = videoPlayService.login(request.getDeviceIp(), request.getDevicePort(), request.getUsername(), request.getPassword()); String streamId = videoPlayService.startStream( request.getM_iServerID(), request.getChannelNo(), request.getStreamType(), request.getNetMode() ); return ApiResponse.success("视频流启动成功", streamId); } catch (Exception e) { return ApiResponse.error("启动视频流失败: " + e.getMessage()); } } @PostMapping("/stream/stop/{streamId}") public ApiResponse stopstream(@PathVariable String streamId) { try { boolean result = videoPlayService.stopStream(streamId); return ApiResponse.success("视频流停止成功", result); } catch (Exception e) { return ApiResponse.error("停止视频流失败: " + e.getMessage()); } } @PostMapping("/logout/{logonId}") public ApiResponse logout(@PathVariable int logonId) { try { boolean result = videoPlayService.logout(logonId); return ApiResponse.success("登出成功", result); } catch (Exception e) { return ApiResponse.error("登出失败: " + e.getMessage()); } } @PostMapping("/cleanup") public ApiResponse cleanup() { try { boolean result = videoPlayService.cleanup(); return ApiResponse.success("SDK清理成功", result); } catch (Exception e) { return ApiResponse.error("SDK清理失败: " + e.getMessage()); } } @GetMapping("/status/{streamId}") public ResponseEntity> getStreamStatus(@PathVariable String streamId) { Map result = new HashMap<>(); try { Map status = videoPlayService.getSessionStatus(streamId); if (status != null) { result.put("success", true); result.put("status", status); } else { result.put("success", false); result.put("message", "流不存在"); } } catch (Exception e) { result.put("success", false); result.put("message", "获取状态失败: " + e.getMessage()); } return ResponseEntity.ok(result); } }