Automation Professionals' Image Streamer Driver Module

Cheers, do you know when it will be released?

And can it do this, though?

It is not at the top of my to-do list, sorry. It is being used in production, even with the leak. I'm happy to sell you a license if you've tested it for your needs.

I have no test hardware with that auth problem, so I don't know. The module uses OpenCV's URL handling, not java's, so there's a reasonable chance it'll work.

Cool, Iā€™ll give it a test onsite and see if I can get it working with their equip and get back to you.

Keep in mind that stream processing is a major CPU hogā€“enough to disrupt other Ignition operations if you use this on a wimpy server. The current major production user (the development sponsor) runs it on a separate Ignition VM instance with just the OPC-UA Server license ($150).

1 Like

You should not have said that: https://page.inductiveautomation.com/pricing-updates-2021

1 Like

pricingStrategy.shuffle()

4 Likes

Maybe try running that in a loop until it comes up with something that doesnā€™t cost $1000 more for installations that use none of those drivers!

3 Likes

Significant impact on hub-and-spoke architectures that only need one of the major branded drivers. Or none of the branded drivers, like this case. Everyone will get the ā€œUltimateā€ packageā€™s driver collection, at the ā€œProā€ price, even if they only need ā€œBasicā€. ):

Also protects IA from a small revenue loss if my Modbus Server module becomes popular, since it includes client functionality. Pushback to encroachment on IA functionality isnā€™t really a surprise.

If you need ā€œProā€ or ā€œUltimateā€, this is a nice feature upgrade and/or price cut. (:

I think that nets out to |:

4 Likes

If I were a 3rd party driver developer Iā€™d be abstracting away as much of the Ignition-specific stuff as possible and producing 2 artifacts: a module for Ignition and a stand-alone OPC UA server + driver.

If you develop for the new driver API in 8.0 youā€™re probably 80% of the way there. The only meaningful functionality provided by Ignition is UI and persistence for configuration values.

Well, I only have three drivers, and only the Modbus driver is very "pure" from an OPC viewpoint. And its most important feature is exposing data to external Modbus clients. Not really something that makes sense for a stand-alone OPC server. This image streamer driver is only incidentally an OPC driver--its core functionality depends on the platform's web technology. Java's not really a first choice for stand-alone video stream conversion servers...

1 Like

Yeah I was thinking more for your ENIP and Modbus stuff. :man_shrugging:

Thereā€™s other work in progress on the ENIP stuffā€¦ canā€™t say more yet. (:

I just discovered your module today, and its great! Iā€™ve been looking for a solution the the ip camera viewers inability to use rtsp forever. You mentioned it can be CPU intensive, but is that if you have many OPC UA ReStreamer device connections, or more so if you are actually viewing multiple streams?

It is a cpu hog on a per-incoming-stream basis. It is very efficient for many consumers of a single stream.

I am looking at this as a possible way to replace an old allegiant switcher, so i would have tons of devices, but only a hand full of active streams. In this case is it a cpu hog, even if the majority of streams are not being used?

Yes, the decoding of a 1080p 30fps stream, even when not used, will consume about 1/2 a modern CPU core. The corresponding full-scale output MJPEG-encoded stream to one or more viewers will consume another 1/2 core, but only while a viewer is connected. Half-scale and quarter-scale output streams are much less demanding.

You could try enabling and disabling devices via script to reduce load when you know that no viewers are watching a particular device.

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.