Hi, I use Milestone XProtect Smart Client with live playback function. Even though I open 5-10 cameras, the video transmission and reception are still very smooth. Please share some tips to optimize live/playback transmission for multiple cameras. I use Milestone server 2017-R2 with Python.
Looking forward to sharing from Milestone experts. Thank you very much.
In order for us to help I think you must describe a little what it is you have implemented that does not perform well.
one guess..
The Smart Client retrieves video using the Image Server protocol. It gets video in the raw format, basically if the camera is setup to use H264 that is what it gets, then client-side the video is decoded and displayed.
In a simpler implementation, and maybe also your implementation, you can ask the recording server Image Server protocol to give images that are transcoded into JPEGS. While this gives a simple implementation of the client, it will also, when opening multiple cameras, make the recording server go into a overload situation, that it cannot keep up when it is transcoding very many images.
This is a guess that might not fit your scenario or implementation. You are welcome to describe the implementation in further details and I might then be able to offer some advise.
NOTE. XProtect version 2017R2 is very old and no longer supported.
https://www.milestonesys.com/support/software/product-lifecycle/
I must recommend an upgrade..
If you upgrade maybe the new WebRTC support would be of interest..
https://doc.developer.milestonesys.com/html/index.html?base=samples/protocolsamples/webrtc_javascript/readme.html&tree=tree_search.html?search=webrtc
Optimized Request for Milestone XProtect Video Retrieval and Large-Scale Deployment
Dear Milestone Support,
I am currently working with Milestone XProtect and have encountered challenges regarding video retrieval efficiency and planning for a large-scale deployment. I would appreciate your guidance on the following issues:
1. Efficient Video Retrieval Methods:
I am retrieving playback video using GoTo messages in XML format, iteratively requesting the “Next” timestamp to retrieve subsequent segments. However, this approach proves to be slow, particularly for longer videos:
- 1280x720 resolution: ~10 minutes retrieval time for a 10-minute video
- 1920x1280 resolution: ~20 minutes retrieval time for a 10-minute video
Is the GoTo message approach the most efficient way to retrieve entire video recordings? Are there alternative methods that offer faster retrieval speeds? Could there be factors affecting my current retrieval performance that I should be aware of?
2. Large-Scale Deployment and Communication:
I am planning to deploy 400 cameras and require simultaneous communication with all devices. I am considering utilizing multiprocessing with multi serve to handle this, but I am concerned about the potential impact on system performance and network bandwidth.
Does Milestone offer specific solutions or best practices for managing concurrent communication with a large number of cameras? Are there recommendations for optimizing system resources and network configuration in such a deployment scenario?
I am grateful for any insights, recommendations, or best practices you can provide to address these challenges. Your expertise will be invaluable in optimizing my Milestone XProtect implementation.
Thank you for your time and support.
Sincerely,
Thank you for your enthusiastic support!
I read in the documentation that:
“If you have not forced transcoding, you will receive the raw camera data embedded in Milestone’s “generic byte data” headers. Such data may be a lot more compact to transfer and will consume less CPU on the server, but currently we do not provide any library with which you can decode it.”
This is causing me difficulty as I am unable to decode the data. I would greatly appreciate your guidance on this matter. Are there any alternative solutions or plans to support decoding in the future?
I look forward to your response!
You strip the generic byte header, then you have the raw video. The raw data still needs to be decoded and/or presented. For the MIP SDK (MIP library (.Net Framework)) there are components to do decoding or presentation. For the raw protocols you just get raw video data.
Besides the MIP Library there are two other options that come to mind:
There is Web RTC which many browsers can play themselves: https://doc.developer.milestonesys.com/html/index.html?base=samples/protocolsamples/webrtc_javascript/readme.html&tree=tree_3.html
There is the Mobile Server which will decode and re-encode the video to Jpegs in the size that is requested: https://doc.developer.milestonesys.com/mipsdkmobile/
When it comes to developing a client there is a need for 400 individual connections if you want to show 400 cameras.
When it comes to scaling a XProtect VMS I know that Milestone Sales have tools and guidance. In that case it might be better to ask Milestone Sales as they do not monitor this forum.