I ran image detection from the sample detectio.py file cloned from GitHub - hailo-ai/hailo-rpi5-examples. We have three sources at our disposal - RPi camera, camera USB and file. What file modifications must be made to use the RTSP stream from an IP camera for analysis?
Welcome to the Hailo Community!
I would recommend looking at our Tappas examples
GitHub Tappas Multistream Detection
and our Hailo Application Code Examples
GitHub Hailo Application Code Examples Multistream App
The both also support RTSP. I am not sure how much effort it will take to adapt them but the examples should get you started.
Also check out the other examples in both repositories. I do not know them all in and out.
Let me know if you are still looking for it. I managed to get it working
@sanjoyg If you can spare a moment, please share your findings. They may be of assistance to future users. Thank you.
Unfortunately, I couldn’t get it to work, can you share with us the solution to the problem step by step?
Here are the changes to do
go to basic_pipelines directory
- Changes to “hailo_rpi_common.py”
Locate function “get_source_type” and change to following
def get_source_type(input_source):
# This function will return the source type based on the input source
# return values can be "file", "mipi" or "usb"
if input_source.startswith("/dev/video"):
return 'usb'
else:
if input_source.startswith("rpi"):
return 'rpi'
elif input_source.startswith("rtsp"):
return 'rtsp'
else:
return 'file'
- Go to detection.py
Locate the function get_pipeline_string and add an “elif” after the elif of USB and before the source. The code should look like
elif self.source_type == "usb":
source_element = (
f"v4l2src device={self.video_source} name=src_0 ! "
"video/x-raw, width=640, height=480, framerate=30/1 ! "
)
elif self.source_type == "rtsp":
source_element = (
f"rtspsrc location={self.video_source} name=src_0 message-forward=true ! "
+ "rtph264depay !"
+ "queue name=hailo_preprocess_q_0 leaky=no max-size-buffers=5 max-size-bytes=0 max-size-time=0 ! "
+ "decodebin ! queue leaky=downstream max-size-buffers=5 max-size-bytes=0 max-size-time=0 ! "
" video/x-raw, format=I420 ! "
)
else:
Now launch detection.py --i <>
I update files but if use commamnd:
python basic_pipelines/detection.py --input rtsp://admin:pass123@192.168.88.103:554/cam/realmonitor?channel=1&subtype=1
In results is error:
Error: gst-resource-error-quark: Resource not found. (3), ../plugins/elements/gstfilesrc.c(553): gst_file_src_start (): /GstPipeline:pipeline0/GstFileSrc:src_0:
No such file "rtsp://admin:192.168.88.103:554/cam/realmonitor?channel=1"
The URL doest seem right. Hopefully you did include password. Also take the “ out
Thank you! I was also struggling with this but your answer helped me!
OK it work - Thanks
I’m sorry but I cant find the second part of your instruction. Did something change?
We prepared a user guide that shows how to get started with RTSP streams: Object Detection on an RTSP Stream - Guides - Hailo Community
There is a right problem of you look at rtsp://admin:admin@192.168.0.101:554/stream
My account on reolink is linked to that ip but the main is on 103, it pings on 103 but the 101 doesnt reply whilst the 103 does not respond on the rtsp://admin:admin@192.168.0.101:554/stream.
Everything is set and it runs on a seperate switch the rpi and the ip cam. The ip runs on PoE and runs great and the rtsp link is set on port 554.
This .py setup works because i get no faults so the bottleneck now is the rtsp.
Does someone have a solution to this annoying problem?
Best regards,
Kevin