By the end of 2021, Axis launched an open-source project for video authentication to ensure the integrity of surveillance video. This was a general implementation and a framework to help apply sign information in video streams and verify it. In AXIS OS 10.11 Axis made its own application with the help of this framework.
Signed video adds cryptographic signatures to a captured video as part of the video codec format (H264 and H265) using SEI frames.
Briefly described:
For detailed information visit the GitHub repository.
Essential part:
Signed video is currently supported on devices with Axis Edge Vault. You can use the product selector to view supported products. In terms of integration, you can use the API discovery CGI to determine if the device is supporting signed video or not.
Here is a sample response:
{
"id": "signed-video",
"version": "1.0",
"name": "Signed Video",
"docLink": "https://www.axis.com/vapix_library/",
"status": "official"
}
You can also check param.cgi to understand if it is supported and enabled. In this case “Image.I#.MPEG.SignedVideo.Enabled” is the parameter that you are looking for.
Full Integration:
It is ideal if users can verify the signed video in playback view. If your exporting contains a proprietary video player, it would be best if you verify the video with your native client.
We suggest two different ways:
1. If you are using AXIS Media Control:
You have already reached halfway and can use the following functions to verify your video:
typedef enum {
unknown = 0,
missing = 1,
valid = 2,
invalid = 3,
} SignatureState;
2. If you are not using AXIS Media Control:
You must merge the C code from the signed video framework into your code.
All present tips are related to how we solve things inside AXIS File Player, where we want to display frames that have been validated.
Framerate | GOP 1 sec | GOP 2 sec |
8 fps | 21 kbits/s | 12 kbits/s |
15 fps | 23 kbits/s | 14 kbits/s |
30 fps | 27 kbits/s | 17 kbits/s |
60 fps | 35 kbits/s | 25 kbits/s |