Why we need to identify a Camera/Video Resource?
It is very important to Nx Witness to recognize each video resource uniquely and individually.
For a professional VMS, you have to provide solid function to video playback, video recording, and endpoint management. So, if you don't have a good way to identify a specific video resource, you can't meet those basic requirements for a general or professional usage.
Besides, in Nx Witness, we provide lots of functions and API which can be reused by 3rd party developers. It is very important to help those good developers grab the specific information they needed.
That is why we have to identify every camera/video resource.
How does Nx identify Camera/Video Resource?
In our database, every video resource will have a unique identifier, called physicalId.
That is not only used by Nx Witness internally, but also used for external communication.
How does the physicalId be generated?
- Firstly server requests MAC address from end-devices via onvif standard discovery request. If Server gets MAC in reply, this returned value of will be saved as physicalId.
- Sometimes camera has empty MAC address field in discover reply. In this case server takes unique ONVIF GUID field value that is never empty and assigns this GUID as interior physical ID
- If the video source is a RTSP stream, Nx will use the URL as an argument for md5-hash function. After calculating the hash we take it as physical ID.
In most cases this is enough to move forward, since most cameras has this GUID eternally
unchanged. But there might be issues with devices of low quality -- in worst cases some of them
might constantly change GUID that results in server continuously re-adding it every discovery cycle.
In your case this camera changed interior GUID only on firmware upgrade, in fact it's also deviation from the standard behavior.