Automation Professionals' Image Streamer Driver Module

I tried the enable/disable via script idea, but the delay on enabling is too long for my purposes. I don’t know if it fits with your design goals, but you may consider also including a fps parameter in addition to the half and quarter scale(assuming its possible). I can set the stream fps on the camera, but its universal and also affects the recording. While your module may not fit my purposes, its still excellent, thank you!

It’s not possible with OpenCV’s VideoCapture() class. Settting it at the camera is the only option.

INFO   | jvm 1    | 2021/06/17 01:10:03 | I [c.a.s.s.StreamFolder          ] [06:10:03]: Edition limit: Eight (8) MJPEG streaming devices 
INFO   | jvm 1    | 2021/06/17 01:10:03 | W [c.a.s.GatewayHook             ] [06:10:03]: CV-5000 Driver is available only for Standard or Edge Editions 
INFO   | jvm 1    | 2021/06/17 01:10:03 | I [c.a.s.r.OpenCVLoader          ] [06:10:03]: OpenCV ClassLoader is com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader@9751614 (0x09751614) from com.inductiveautomation.ignition.gateway.modules.NativeLibraryManagerImpl@375986c4 
INFO   | jvm 1    | 2021/06/17 01:10:03 | I [c.a.s.r.OpenCVLoader          ] [06:10:03]: Succeeded loading Jar C:/Program Files/opencv/build/java/opencv.jar and JNI C:\Program Files\opencv\build\java\x64\opencv_java452.dll as opencv_java452-1269325283089973433.dll 
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.calib3d.Calib3d to system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.calib3d.StereoBM to system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.calib3d.StereoMatcher to system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.calib3d.StereoSGBM to system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.calib3d.UsacParams to system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Algorithm to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.core.Core to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.CvException to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.core.CvType to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.DMatch to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.KeyPoint to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Mat to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfByte to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfDMatch to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfDouble to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfFloat to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfFloat4 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfFloat6 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfInt to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfInt4 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfKeyPoint to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfPoint to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfPoint2f to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfPoint3 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfPoint3f to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfRect to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfRect2d to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.MatOfRotatedRect to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Point to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Point3 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Range to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Rect to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Rect2d to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.RotatedRect to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Scalar to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.Size to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.TermCriteria to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.core.TickMeter to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.ClassificationModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.DetectionModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.DictValue to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.dnn.Dnn to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.KeypointsModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.Layer to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.Model to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.Net to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.SegmentationModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.TextDetectionModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.TextDetectionModel_DB to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.TextDetectionModel_EAST to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.dnn.TextRecognitionModel to system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.AKAZE to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.AffineFeature to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.AgastFeatureDetector to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.BFMatcher to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.BOWImgDescriptorExtractor to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.BOWKMeansTrainer to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.BOWTrainer to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.BRISK to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.DescriptorMatcher to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.FastFeatureDetector to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.Feature2D to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.features2d.Features2d to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.FlannBasedMatcher to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.GFTTDetector to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.KAZE to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.MSER to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.ORB to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.SIFT to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.SimpleBlobDetector to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.features2d.SimpleBlobDetector_Params to system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.highgui.HighGui to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.highgui.ImageWindow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.imgcodecs.Imgcodecs to system.cv2.imgcodecs
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.CLAHE to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.GeneralizedHough to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.GeneralizedHoughBallard to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.GeneralizedHoughGuil to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.imgproc.Imgproc to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.IntelligentScissorsMB to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Override Load org.opencv.imgproc.LineSegmentDetector to system.cv2.line_descriptor as LSDetector
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.Moments to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.imgproc.Subdiv2D to system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.ANN_MLP to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.Boost to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.DTrees to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.EM to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.KNearest to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.LogisticRegression to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.ml.Ml to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.NormalBayesClassifier to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.ParamGrid to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.RTrees to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.SVM to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.SVMSGD to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.StatModel to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.ml.TrainData to system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.objdetect.BaseCascadeClassifier to system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.objdetect.CascadeClassifier to system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.objdetect.HOGDescriptor to system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.objdetect.Objdetect to system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.objdetect.QRCodeDetector to system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Discarding unknown org.opencv.osgi.OpenCVInterface
INFO   | jvm 1    | 2021/06/17 01:10:04 | Discarding unknown org.opencv.osgi.OpenCVNativeLoader
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.AlignExposures to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.AlignMTB to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.CalibrateCRF to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.CalibrateDebevec to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.CalibrateRobertson to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.MergeDebevec to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.MergeExposures to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.MergeMertens to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.MergeRobertson to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.photo.Photo to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.Tonemap to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.TonemapDrago to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.TonemapMantiuk to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.photo.TonemapReinhard to system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.utils.Converters to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.BackgroundSubtractor to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.BackgroundSubtractorKNN to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.BackgroundSubtractorMOG2 to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.DISOpticalFlow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.DenseOpticalFlow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.FarnebackOpticalFlow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.KalmanFilter to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.SparseOpticalFlow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.SparsePyrLKOpticalFlow to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.Tracker to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.TrackerGOTURN to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.TrackerGOTURN_Params to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.TrackerMIL to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.TrackerMIL_Params to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.video.VariationalRefinement to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.video.Video to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | VideoCapture is org.opencv.videoio.VideoCapture
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.videoio.VideoCapture to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Indirect Load org.opencv.videoio.VideoWriter to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Direct Load org.opencv.videoio.Videoio to system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.line_descriptor
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Generated field class for system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | I [c.a.s.GatewayHook             ] [06:10:04]: Streamer servlet registered. Device streams will be http(s)://gwName:port/main/streamer/deviceName. 
INFO   | jvm 1    | 2021/06/17 01:10:04 | I [g.ModuleManager               ] [06:10:04]: Starting up module 'com.automation_pros.streamer' v0.5.0 (b2011191454)... module-name=Image and Video Streaming Driver
INFO   | jvm 1    | 2021/06/17 01:10:04 | I [ReStreamer[GarageCam]         ] [06:10:04]: Capture thread started 
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.core.Core to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.core.CvType to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.highgui.HighGui to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.utils.Converters to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.video.Video to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.videoio.Videoio to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2 to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.line_descriptor to Namespace system.cv2.line_descriptor
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.features2d.Features2d to Namespace system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.features2d to Namespace system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.imgproc.Imgproc to Namespace system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.imgproc to Namespace system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.objdetect.Objdetect to Namespace system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.objdetect to Namespace system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.calib3d.Calib3d to Namespace system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.calib3d to Namespace system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.ml.Ml to Namespace system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.ml to Namespace system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.dnn.Dnn to Namespace system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.dnn to Namespace system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.imgcodecs.Imgcodecs to Namespace system.cv2.imgcodecs
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded org.opencv.photo.Photo to Namespace system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | Loaded com.automation_pros.streamer.rpc.system.cv2.photo to Namespace system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:04 | I [Project                       ] [06:10:04]: Restarting gateway scripts... project=Makers
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.core.Core to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.core.CvType to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.highgui.HighGui to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.utils.Converters to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.video.Video to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.videoio.Videoio to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2 to Namespace system.cv2
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.line_descriptor to Namespace system.cv2.line_descriptor
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.features2d.Features2d to Namespace system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.features2d to Namespace system.cv2.features2d
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.imgproc.Imgproc to Namespace system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.imgproc to Namespace system.cv2.imgproc
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.objdetect.Objdetect to Namespace system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.objdetect to Namespace system.cv2.objdetect
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.calib3d.Calib3d to Namespace system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.calib3d to Namespace system.cv2.calib3d
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.ml.Ml to Namespace system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.ml to Namespace system.cv2.ml
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.dnn.Dnn to Namespace system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.dnn to Namespace system.cv2.dnn
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.imgcodecs.Imgcodecs to Namespace system.cv2.imgcodecs
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded org.opencv.photo.Photo to Namespace system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:05 | Loaded com.automation_pros.streamer.rpc.system.cv2.photo to Namespace system.cv2.photo
INFO   | jvm 1    | 2021/06/17 01:10:06 | I [ReStreamer[GarageCam]         ] [06:10:06]: Stream error 
INFO   | jvm 1    | 2021/06/17 01:10:06 | java.lang.RuntimeException: Generic Connection Failure
INFO   | jvm 1    | 2021/06/17 01:10:06 | 	at com.automation_pros.streamer.driver.ReStreamer$ReStreamerReader.run(ReStreamer.java:178)
INFO   | jvm 1    | 2021/06/17 01:10:06 | 	at java.base/java.lang.Thread.run(Unknown Source)
INFO   | jvm 1    | 2021/06/17 01:10:13 | I [ReStreamer[GarageCam]         ] [06:10:13]: Stream error 
INFO   | jvm 1    | 2021/06/17 01:10:13 | java.lang.RuntimeException: Generic Connection Failure
INFO   | jvm 1    | 2021/06/17 01:10:13 | 	at com.automation_pros.streamer.driver.ReStreamer$ReStreamerReader.run(ReStreamer.java:178)
INFO   | jvm 1    | 2021/06/17 01:10:13 | 	at java.base/java.lang.Thread.run(Unknown Source)
INFO   | jvm 1    | 2021/06/17 01:10:21 | I [ReStreamer[GarageCam]         ] [06:10:21]: Stream error 
INFO   | jvm 1    | 2021/06/17 01:10:21 | java.lang.RuntimeException: Generic Connection Failure
INFO   | jvm 1    | 2021/06/17 01:10:21 | 	at com.automation_pros.streamer.driver.ReStreamer$ReStreamerReader.run(ReStreamer.java:178)
INFO   | jvm 1    | 2021/06/17 01:10:21 | 	at java.base/java.lang.Thread.run(Unknown Source)

That error tends to show up when OpenCV has been successfully installed, but OpenCV can’t find your ffmpeg DLLs. Make sure you followed the instructions for ffmpeg, too, and included it in the path.

Edit: Actually, that shows up for true connection errors, too (url typos, etc). OpenCV doesn’t provide error codes for more detail, unfortunately.

I recently cleaned up my module download server and inadvertently broke the links here. Because I forgot to announce an update:

I added a URL query parameter to perform frame-skipping on a client-by-client basis. Great for bandwidth reduction on multi-camera reduced-scale overview pages.

For Ignition v8.1.x: v0.5.0.2102271718

For Ignition v7.9.x: v0.5.0.2102271603

1 Like

I’ve had a spell of time on the sponsor’s hardware finding bugs and cleaning up this leaky module. This version just fixes bugs:

For Ignition v8.1.x: v0.5.2.220801908

For Ignition v7.9.x: v0.5.2.220801922

The improvement in stability is substantial. All users should upgrade. Prior versions removed.

2 Likes

@pturmel
Where can I purchase the license ?

Lovely module, btw.

The module is working great, but I have an issue with load time in browser.

The load time in Designer is instant, but it can take up to 1-2 minutes to load in browser.
I’m not sure it even has anything to do with the module itself.

Any suggestions ?

No idea. Share the details of how you are using it in the browser. Perspective, I presume?

Yes, through perspective.

Can you send me a minimum project that shows the behavior? (I’m traveling this week and next, but will likely have some time to debug this.)

@pturmel I just started trying to use the Image Streamer Driver module yesterday. I have a test device set up with the correct rtsp url format for the cameras I am trying to view
(rtsp://user:password@IP:554/Streaming/Channels/101). I am using the http://gatewayIP:Port/main/system/streamer/devicename format in the URL field of the Vision IP Camera Viewer. I have been troubleshooting this for the last 2 days, but I can’t figure out why I am getting a source error.

I have looked in the log to see if any errors show up there, but this is all I see.

Try that URL with VLC or ffplay on the gateway machine. (If headless, try ffmpeg to /dev/null.) Problems with codecs in OpenCV is a bit opaque.

Also, restart the module and send me the corresponding snippet of wrapper.log to my support email. Don’t send the logs from the gateway web interface–many OpenCV errors, and errors from ffmpeg or gstreamer libs, will only be in the wrapper due to those libraries’ non-java aware use of stderr.

Thank you for the quick response. I will be working in the field for the next couple of days, but I should have time to work on this again next week.

Can this module be used with the 2 hour trial to make sure it works for me before getting a license?

I don’t know for sure if the trial works for 3rd party modules.

Yes, you can use the trial period for testing.

Thank you,

Tim Merilatt

1 Like

I’m having the same problem as tmerilatt81. Is FFmpeg required? The instructions for installation no longer appear valid and I wasn’t sure if it was actually required. I also tested the RTSP in VLC and it works there.

I realized I do need FFmpeg. Installing that now to see if it fixes the source error.

On Linux, libopencv4.2-jni pulls in libopencv-videoio4.2, which pulls in libav* (FFmpeg libs) and libgstreamer1.0-0.

So, on (Ubuntu) Linux, FFmpeg is definitely required and is automatically installed.

I just downloaded the OpenCV-4.6.0 package for windows and it has the same linkage to FFmpeg that v4.2.0 has.

Will do a fresh install to see what breaks, but yes, expect to install FFmpeg.

It does look like you need the very latest OpenCV (4.6.0) to use any FFmpeg ≥ v5.0.