tdwy-service/src/main/java/com/whdc/controller/VideoPlayController.java

111 lines
4.0 KiB
Java

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<Boolean> initSDK() {
try {
boolean result = videoPlayService.initSDK();
return ApiResponse.success("SDK初始化成功", result);
} catch (Exception e) {
return ApiResponse.error("SDK初始化失败: " + e.getMessage());
}
}
@PostMapping("/login")
public ApiResponse<Integer> 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<String> 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<Boolean> 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<Boolean> 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<Boolean> 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<Map<String, Object>> getStreamStatus(@PathVariable String streamId) {
Map<String, Object> result = new HashMap<>();
try {
Map<String, Object> 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);
}
}