111 lines
4.0 KiB
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);
|
|
}
|
|
} |