phrocker commented on a change in pull request #612: MINIFICPP-854: Capture 
RTSP Frame
URL: https://github.com/apache/nifi-minifi-cpp/pull/612#discussion_r304396759
 
 

 ##########
 File path: extensions/opencv/CaptureRTSPFrame.cpp
 ##########
 @@ -116,17 +121,28 @@ void CaptureRTSPFrame::onSchedule(core::ProcessContext 
*context, core::ProcessSe
     rtspURI.append(rtsp_uri_);
   }
 
-  cv::VideoCapture capture(rtspURI.c_str());
-  video_capture_ = capture;
-  video_backend_driver_ = video_capture_.getBackendName();
+  rtsp_url_ = rtspURI;
+
 }
 
 void CaptureRTSPFrame::onTrigger(const std::shared_ptr<core::ProcessContext> 
&context,
                                  const std::shared_ptr<core::ProcessSession> 
&session) {
   auto flow_file = session->create();
 
-  cv::Mat frame;
+  try {
+    video_capture_.open(rtsp_url_);
+    video_backend_driver_ = video_capture_.getBackendName();
+  } catch (const cv::Exception &e) {
+    logger_->log_error("Unable to open RTSP stream: %s", e.what());
+    session->transfer(flow_file, Failure);
 
 Review comment:
   This creates an empty FF, so that means if we can't open the URL we could 
potentially create many flow files that are empty. The typical approach is to 
yield in the context. You can still create a failure flow file ( though I would 
suggest exploring if this is the correct route ), but you should probably yield 
here. 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to