[Libav-user] Handling a large number of rtsp cameras ( > 100) - image processing
Francesco Taioli
taioli.francesco98 at gmail.com
Fri Feb 4 11:04:55 EET 2022
Hi all,
I have a performance problem regarding image acquisition from a
large number of cameras (they are greater than 100) in a *python* program.
Currently, I use cv2 with a ffmpeg pipeline.
*What I want to do*
I want to do some image processing on those cameras multiple times in a
minute.
*Current solution - pseudocode*
while True:
for every rtsp_cameras_connection_params:
*open_connection*
read_current_frame # the real time frame
process_frame
close connection
This solution works, but opening the connection takes a lot of time.
*Why do you open the connection inside the loop, you may ask?*
As far as I know and I have tried, this is the only solution that allows me
to fetch the LAST frame from a camera (the real time frame, no buffer)
without
giving performance issues for the powerful high-end server that this code
runs on.
*What do I want?*
Ideally, this
open_all_the_cameras
while True:
for every rtsp_camera_already_opened:
read_current_frame # the real time frame
process_frame
As you can see, the ideal solution is to open *once* all the cameras
and save them into an array. Then, at every loop, read the last frame.
*What have I tried?*
Basically every solution. *Multithreading*, *multiprocessing,* and every
stackoverflow answers. These solutions work only for a limited amount of
cameras (10-15),
then the CPU will be 100% on usage (because the threads, in the background,
are
always reading the last frame and discarding it if I am not asking the
last).
There is a way to open the connection, and read the last frame (the real
time one),
not the one that I was before (the buffered one)?
Thanks to all. Hope it's clear.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20220204/09d082e0/attachment.htm>
More information about the Libav-user
mailing list