Please provide complete information as applicable to your setup.
• Hardware Platform GPU
• DeepStream 7.0 and 7.1 (2 different situations)
Hello, I have two different situations with multiurisrcbin
1) Using DS 7.1
When adding cameras sequentially via the multiurisrcbin REST API, they are added in order, and as long as I don’t remove any, the internal_ids generated by DS can be automatically mapped to the source_id values sent in the JSON to the API, giving me output control.
The problem arises when removing cameras. For example, I have a max-batch-size of 32 with 32 cameras added via API. If I remove camera 2 and camera 4, then re-add the camera with source_id = 4, DS 7.1 automatically assigns it the first available internal_id, which would be 2.
This breaks the internal mapping in my projects, as I maintain additional camera information in a custom config file.
Is there any way to retrieve the internal_id from the API? The API provides a get-stream-info method, but it only returns the parameters sent by API—not the actual internal_id, so the mapping isn’t guaranteed.
This mismatch also affects the tiler output since the camera order changes. It’s even worse when not using a tiler and relying on streamdemux outputs.
Is there any practical solution? Or in the worst case, would it be necessary to modify the C++ code of one of the plugins? If so, which file and which part of the code should be adjusted?
2) Using DS 7.0
A very similar situation happens here, when adding cameras sequentially via the multiurisrcbin REST API, they are added in order, and as long as I don’t remove any, the internal_id s generated by DS can be automatically mapped to the source_id values sent in the JSON to the API, giving me output control
The problem is when a source is removed, its associated internal_id is not recycled. So when re-adding a source, the internal_id increases by 1.
For example, I have 32 cameras added to multiurisrcbin with max-batch-size = 32. I remove cameras 2 and 4. When re-adding them, DS 7.0 assigns them internal_ids 33 and 34.
This causes internal mapping issues and even code crashes (exceptions) that kill the pipeline. While this may be easier to track (e.g., using probe data to detect sources that have not sent data for N seconds and replacing them), it still presents challenges in mapping.
The tiler is also affected: rows and columns increase dynamically, and sometimes the new cells do not display anything, and in the same way it would shoot the number of tiler cells to infinity while removing and adding cameras for days, also leaving the cells of the lost internal_id inactive.
So again, is there any practical solution? Or in the worst-case scenario, would I need to dive into the C++ code of the plugin? If yes, which file and what part should be modified?
Please, someone lend me a hand. The multiurisrcbin plugin is extremely powerful as it allows us to add/remove cameras dynamically without restarting the production pipeline, but it has the limitations I’ve just described. These issues are holding us back from launching an on-demand production system.
Looking forward to your kind official support, friends at NVIDIA.
Best regards.