添加 proxy.wvp.use-wvp-assist 配置
支持配置 是否 尝试使用 wvp-assist 下载视频回放 否则使用 playback 回放录制视频
This commit is contained in:
parent
37fc276f3d
commit
f7b8960a98
@ -11,4 +11,8 @@ public class WvpProxyConfig {
|
||||
private String url;
|
||||
private String user;
|
||||
private String passwd;
|
||||
/**
|
||||
* 是否尝试通过 wvp-assist 服务下载
|
||||
*/
|
||||
private Boolean useWvpAssist = true;
|
||||
}
|
||||
|
@ -169,28 +169,44 @@ public class WvpService {
|
||||
log.debug("{}", record);
|
||||
});
|
||||
|
||||
try{
|
||||
JsonResponse<String> videoPathResponse = downloadFromWvpAssist(deviceCode, deviceId, channelId, startTime, endTime, token);
|
||||
String videoUrl = videoPathResponse.getData();
|
||||
log.info("设备(deviceCode {}) (deviceId {}, channel{}) ({} ~ {}) 视频下载地址 {}", deviceCode, deviceId, channelId, startTime, endTime, videoUrl);
|
||||
downloadService.download(response, videoUrl);
|
||||
} catch (Exception e){
|
||||
Retryer<JsonResponse<StreamContent>> playBackRetryer = RetryUtil.getDefaultRetryer("通过回放获取实时视频流下载");
|
||||
JsonResponse<StreamContent> videoStreamResponse = playBackRetryer.call(() -> wvpProxyClient.playbackStart(token, deviceId, channelId, new GeneralTimeReq(startTime, endTime)));
|
||||
StreamContent streamContent = videoStreamResponse.getData();
|
||||
String stream = streamContent.getStream();
|
||||
String streamUrl = streamContent.getFlv();
|
||||
try {
|
||||
recordService.header(response);
|
||||
recordService.record(response, streamUrl, DateUtil.between(startDateTime, endDateTime, DateUnit.SECOND));
|
||||
} finally {
|
||||
wvpProxyClient.playbackStop(token, deviceId, channelId, stream);
|
||||
Boolean useWvpAssist = wvpProxyConfig.getUseWvpAssist();
|
||||
log.info("准备下载 deviceCode: {}, deviceId: {}, channelId:{}, ({}~{}) 历史视频, 通过 wvp-assist: {}", deviceCode, deviceId, channelId, startTime, endTime, useWvpAssist);
|
||||
if(useWvpAssist){
|
||||
try{
|
||||
downloadFromWvpAssist(response, token, deviceCode, deviceId, channelId, startTime, endTime);
|
||||
} catch (Exception e){
|
||||
log.warn("尝试通过 wvp-assist 下载视频失败, 尝试通过 视频回放 拉取视频");
|
||||
downloadFromPlayback(response, token, deviceId, channelId, startTime, endTime);
|
||||
}
|
||||
} else {
|
||||
downloadFromPlayback(response, token, deviceId, channelId, startTime, endTime);
|
||||
}
|
||||
|
||||
return login;
|
||||
}
|
||||
|
||||
private void downloadFromWvpAssist(HttpServletResponse response, String token, String deviceCode, String deviceId, String channelId, String startTime, String endTime){
|
||||
JsonResponse<String> videoPathResponse = downloadFromWvpAssist(deviceCode, deviceId, channelId, startTime, endTime, token);
|
||||
String videoUrl = videoPathResponse.getData();
|
||||
log.info("设备(deviceCode {}) (deviceId {}, channel{}) ({} ~ {}) 视频下载地址 {}", deviceCode, deviceId, channelId, startTime, endTime, videoUrl);
|
||||
downloadService.download(response, videoUrl);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private void downloadFromPlayback(HttpServletResponse response, String token, String deviceId, String channelId, String startTime, String endTime){
|
||||
Retryer<JsonResponse<StreamContent>> playBackRetryer = RetryUtil.getDefaultRetryer("通过回放获取实时视频流下载");
|
||||
JsonResponse<StreamContent> videoStreamResponse = playBackRetryer.call(() -> wvpProxyClient.playbackStart(token, deviceId, channelId, new GeneralTimeReq(startTime, endTime)));
|
||||
StreamContent streamContent = videoStreamResponse.getData();
|
||||
String stream = streamContent.getStream();
|
||||
String streamUrl = streamContent.getFlv();
|
||||
try {
|
||||
recordService.header(response);
|
||||
recordService.record(response, streamUrl, DateUtil.between(DateUtil.parseDateTime(startTime), DateUtil.parseDateTime(endTime), DateUnit.SECOND));
|
||||
} finally {
|
||||
wvpProxyClient.playbackStop(token, deviceId, channelId, stream);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
@SneakyThrows
|
||||
private JsonResponse<String> downloadFromWvpAssist(String deviceCode, String deviceId, String channelId, String startTime, String endTime, String token) {
|
||||
|
@ -47,3 +47,4 @@ proxy:
|
||||
url: http://192.168.1.241:18978
|
||||
user: admin
|
||||
passwd: admin
|
||||
use-wvp-assist: false
|
||||
|
Loading…
Reference in New Issue
Block a user