| 
					
				 | 
			
			
				@@ -11,8 +11,10 @@ import javax.sip.ResponseEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Qualifier; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.http.HttpStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.http.ResponseEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.context.request.async.DeferredResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -104,6 +106,10 @@ public class PlayServiceImpl implements IPlayService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ZLMHttpHookSubscribe subscribe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Qualifier("taskExecutor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ThreadPoolTaskExecutor taskExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,21 +141,23 @@ public class PlayServiceImpl implements IPlayService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result.onCompletion(()->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 点播结束时调用截图接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // TODO 应该在上流时调用更好,结束也可能是错误结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String path =  "snap"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String fileName =  deviceId + "_" + channelId + ".jpg"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ResponseEntity responseEntity =  (ResponseEntity)result.getResult(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WVPResult wvpResult = (WVPResult)responseEntity.getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (Objects.requireNonNull(wvpResult).getCode() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    String streamUrl = streamInfoForSuccess.getFmp4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 请求截图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    logger.info("[请求截图]: " + fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            taskExecutor.execute(()->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // TODO 应该在上流时调用更好,结束也可能是错误结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String path =  "snap"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String fileName =  deviceId + "_" + channelId + ".jpg"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ResponseEntity responseEntity =  (ResponseEntity)result.getResult(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WVPResult wvpResult = (WVPResult)responseEntity.getBody(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (Objects.requireNonNull(wvpResult).getCode() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        String streamUrl = streamInfoForSuccess.getFmp4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // 请求截图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        logger.info("[请求截图]: " + fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (streamInfo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String streamId = streamInfo.getStream(); 
			 |