Merge pull request #570 from TristingChen/optimize--play-complete
优化--直播接口流程结束异步处理截图操作,提高接口响应速度和并发能力pull/578/head
commit
eb177a6742
|
@ -11,8 +11,10 @@ import javax.sip.ResponseEvent;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.context.request.async.DeferredResult;
|
import org.springframework.web.context.request.async.DeferredResult;
|
||||||
|
|
||||||
|
@ -104,6 +106,10 @@ public class PlayServiceImpl implements IPlayService {
|
||||||
private ZLMHttpHookSubscribe subscribe;
|
private ZLMHttpHookSubscribe subscribe;
|
||||||
|
|
||||||
|
|
||||||
|
@Qualifier("taskExecutor")
|
||||||
|
@Autowired
|
||||||
|
private ThreadPoolTaskExecutor taskExecutor;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -135,21 +141,23 @@ public class PlayServiceImpl implements IPlayService {
|
||||||
|
|
||||||
result.onCompletion(()->{
|
result.onCompletion(()->{
|
||||||
// 点播结束时调用截图接口
|
// 点播结束时调用截图接口
|
||||||
// TODO 应该在上流时调用更好,结束也可能是错误结束
|
taskExecutor.execute(()->{
|
||||||
String path = "snap";
|
// TODO 应该在上流时调用更好,结束也可能是错误结束
|
||||||
String fileName = deviceId + "_" + channelId + ".jpg";
|
String path = "snap";
|
||||||
ResponseEntity responseEntity = (ResponseEntity)result.getResult();
|
String fileName = deviceId + "_" + channelId + ".jpg";
|
||||||
if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {
|
ResponseEntity responseEntity = (ResponseEntity)result.getResult();
|
||||||
WVPResult wvpResult = (WVPResult)responseEntity.getBody();
|
if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {
|
||||||
if (Objects.requireNonNull(wvpResult).getCode() == 0) {
|
WVPResult wvpResult = (WVPResult)responseEntity.getBody();
|
||||||
StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData();
|
if (Objects.requireNonNull(wvpResult).getCode() == 0) {
|
||||||
MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId());
|
StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData();
|
||||||
String streamUrl = streamInfoForSuccess.getFmp4();
|
MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId());
|
||||||
// 请求截图
|
String streamUrl = streamInfoForSuccess.getFmp4();
|
||||||
logger.info("[请求截图]: " + fileName);
|
// 请求截图
|
||||||
zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName);
|
logger.info("[请求截图]: " + fileName);
|
||||||
|
zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
String streamId = streamInfo.getStream();
|
String streamId = streamInfo.getStream();
|
||||||
|
|
Loading…
Reference in New Issue