refactor: update FFmpeg hardware acceleration to use NVDEC instead of CUVID for improved performance
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build Worker Base and Application Images / check-base-changes (push) Successful in 8s
				
			
		
			
				
	
				Build Worker Base and Application Images / build-base (push) Has been skipped
				
			
		
			
				
	
				Build Worker Base and Application Images / build-docker (push) Successful in 3m2s
				
			
		
			
				
	
				Build Worker Base and Application Images / deploy-stack (push) Successful in 10s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build Worker Base and Application Images / check-base-changes (push) Successful in 8s
				
			Build Worker Base and Application Images / build-base (push) Has been skipped
				
			Build Worker Base and Application Images / build-docker (push) Successful in 3m2s
				
			Build Worker Base and Application Images / deploy-stack (push) Successful in 10s
				
			This commit is contained in:
		
							parent
							
								
									bdbf688946
								
							
						
					
					
						commit
						cb9ff7bc86
					
				
					 2 changed files with 7 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -208,20 +208,20 @@ class RTSPReader:
 | 
			
		|||
                except Exception as e:
 | 
			
		||||
                    logger.debug(f"Camera {self.camera_id}: FFmpeg optimal hardware acceleration not available: {e}")
 | 
			
		||||
 | 
			
		||||
            # Method 3: Try FFmpeg with basic NVIDIA CUVID
 | 
			
		||||
            # Method 3: Try FFmpeg with NVIDIA NVDEC (better for RTX 3060)
 | 
			
		||||
            if not hw_accel_success:
 | 
			
		||||
                try:
 | 
			
		||||
                    import os
 | 
			
		||||
                    os.environ['OPENCV_FFMPEG_CAPTURE_OPTIONS'] = 'video_codec;h264_cuvid|rtsp_transport;tcp|hwaccel;cuda|hwaccel_device;0'
 | 
			
		||||
                    os.environ['OPENCV_FFMPEG_CAPTURE_OPTIONS'] = 'hwaccel;cuda|hwaccel_device;0|rtsp_transport;tcp'
 | 
			
		||||
 | 
			
		||||
                    logger.info(f"Attempting FFmpeg with basic CUVID for camera {self.camera_id}")
 | 
			
		||||
                    logger.info(f"Attempting FFmpeg with NVDEC hardware acceleration for camera {self.camera_id}")
 | 
			
		||||
                    self.cap = cv2.VideoCapture(self.rtsp_url, cv2.CAP_FFMPEG)
 | 
			
		||||
 | 
			
		||||
                    if self.cap.isOpened():
 | 
			
		||||
                        hw_accel_success = True
 | 
			
		||||
                        logger.info(f"Camera {self.camera_id}: Using FFmpeg CUVID hardware acceleration")
 | 
			
		||||
                        logger.info(f"Camera {self.camera_id}: Using FFmpeg NVDEC hardware acceleration")
 | 
			
		||||
                except Exception as e:
 | 
			
		||||
                    logger.debug(f"Camera {self.camera_id}: FFmpeg CUVID not available: {e}")
 | 
			
		||||
                    logger.debug(f"Camera {self.camera_id}: FFmpeg NVDEC not available: {e}")
 | 
			
		||||
 | 
			
		||||
            # Method 4: Try FFmpeg with VAAPI (Intel/AMD GPUs)
 | 
			
		||||
            if not hw_accel_success:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,11 +109,9 @@ class FFmpegCapabilities:
 | 
			
		|||
            if codec == 'h264':
 | 
			
		||||
                options.update({
 | 
			
		||||
                    'hwaccel': 'cuda',
 | 
			
		||||
                    'hwaccel_device': '0',
 | 
			
		||||
                    'video_codec': 'h264_cuvid',
 | 
			
		||||
                    'hwaccel_output_format': 'cuda'
 | 
			
		||||
                    'hwaccel_device': '0'
 | 
			
		||||
                })
 | 
			
		||||
                logger.info("Using NVIDIA CUVID hardware acceleration for H.264")
 | 
			
		||||
                logger.info("Using NVIDIA NVDEC hardware acceleration for H.264")
 | 
			
		||||
            elif codec == 'h265':
 | 
			
		||||
                options.update({
 | 
			
		||||
                    'hwaccel': 'cuda',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue