添加 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 url;
|
||||||
private String user;
|
private String user;
|
||||||
private String passwd;
|
private String passwd;
|
||||||
|
/**
|
||||||
|
* 是否尝试通过 wvp-assist 服务下载
|
||||||
|
*/
|
||||||
|
private Boolean useWvpAssist = true;
|
||||||
}
|
}
|
||||||
|
@ -169,28 +169,44 @@ public class WvpService {
|
|||||||
log.debug("{}", record);
|
log.debug("{}", record);
|
||||||
});
|
});
|
||||||
|
|
||||||
try{
|
Boolean useWvpAssist = wvpProxyConfig.getUseWvpAssist();
|
||||||
JsonResponse<String> videoPathResponse = downloadFromWvpAssist(deviceCode, deviceId, channelId, startTime, endTime, token);
|
log.info("准备下载 deviceCode: {}, deviceId: {}, channelId:{}, ({}~{}) 历史视频, 通过 wvp-assist: {}", deviceCode, deviceId, channelId, startTime, endTime, useWvpAssist);
|
||||||
String videoUrl = videoPathResponse.getData();
|
if(useWvpAssist){
|
||||||
log.info("设备(deviceCode {}) (deviceId {}, channel{}) ({} ~ {}) 视频下载地址 {}", deviceCode, deviceId, channelId, startTime, endTime, videoUrl);
|
try{
|
||||||
downloadService.download(response, videoUrl);
|
downloadFromWvpAssist(response, token, deviceCode, deviceId, channelId, startTime, endTime);
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
Retryer<JsonResponse<StreamContent>> playBackRetryer = RetryUtil.getDefaultRetryer("通过回放获取实时视频流下载");
|
log.warn("尝试通过 wvp-assist 下载视频失败, 尝试通过 视频回放 拉取视频");
|
||||||
JsonResponse<StreamContent> videoStreamResponse = playBackRetryer.call(() -> wvpProxyClient.playbackStart(token, deviceId, channelId, new GeneralTimeReq(startTime, endTime)));
|
downloadFromPlayback(response, token, deviceId, channelId, 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);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
downloadFromPlayback(response, token, deviceId, channelId, startTime, endTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
return login;
|
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")
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
private JsonResponse<String> downloadFromWvpAssist(String deviceCode, String deviceId, String channelId, String startTime, String endTime, String token) {
|
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
|
url: http://192.168.1.241:18978
|
||||||
user: admin
|
user: admin
|
||||||
passwd: admin
|
passwd: admin
|
||||||
|
use-wvp-assist: false
|
||||||
|
Loading…
Reference in New Issue
Block a user