Method to record at high speed

Does XProtect provide a feature to import video files? If it does, can it import video files at a rate faster than real-time playback speed?

If not, we are currently importing video files to XProtect by streaming using RTSP as if they were virtual cameras. In this case, does XProtect have a feature to capture camera footage faster than real-time speed?

If not, we are considering splitting video files into multiple segments and streaming them concurrently. In this case, we believe that the video files will be treated as coming from different cameras and captured simultaneously, leading to them being grouped as separate occurrences at the same timestamp.

Could XProtect have a feature to consolidate and synchronize these parallel-captured, segmented video files into a single camera feed with a consistent timestamp across the entire duration?

For all the aforementioned questions, if achievable with SDKs, please share any relevant information that might be helpful.

Basically you can record video from camera devices in two ways:

  1. Live
  2. Edge retrieval

While it stands to reason that live recording is at “live” speed, edge retrieval is on the contrary done at the speed available.

For regular cameras the edge retrieval must come from the device, and it would be a breach of security if it was possible to inject video from other sources.

You can however using the Driver Framework create your own kind of devices and device driver that could have one or multiple “camera” devices. These camera devices you can implement to support edge retrieval. This way you have implement devices with the capability to import video files.

General documentation on the driver framework is found here…

https://doc.developer.milestonesys.com/html/index.html?base=gettingstarted/intro_driverframework.html&tree=tree_4.html

https://doc.developer.milestonesys.com/html/index.html?base=driverframeworkhelp/index.html&tree=tree_1.html

https://doc.developer.milestonesys.com/html/index.html?base=samples/pluginsamples/demodriver/readme.html&tree=tree_1.html

Thank you for your answer and apologies for the delayed reply.

I would like to confirm the video recording through Edge Retrieve. However, Edge Retrieve is resulting in an error. The environment and execution results are as follows. Please provide the cause and solution.

Environment:

- XProtect Essential+ 2024 R2

- https://download.milestonesys.com/DevCon22/VideoFileImportDriver.zip

Setup:

- Built RemoteRetrievalTaskSample and VideoFileImportDriver, and placed the latter in the following locations:

[C:\Program](file:C:/Program) Files\Milestone\MIPDrivers\VideoFileImportDriver\VideoFileImportDriver.def

[C:\Program](file:C:/Program) Files\Milestone\MIPDrivers\VideoFileImportDriver\VideoFileImportDriver.dll

- Restarted Milestone XProtect Recording Server.

Execution:

- Executed RemoteRetrievalTaskSample.exe

- Logged in through Connect to Server

- Performed the following actions on the Form1 screen:

Clicked “Connect to Retrieval Service”

Clicked “Select Camera”

Selected VideoFileImportDriver Hardware (127.0.0.1) - VideoFileImportDriver video

Clicked “Select File”

Selected [C:\Users\Administrator\Desktop\Video\factory.mp4](file:C:/Users/Administrator/Desktop/Video/factory.mp4)

Clicked “Retrieve”

Result:

The following error was displayed and logged on the Form1 screen and in: [C:\ProgramData\Milestone\XProtect](file:C:/ProgramData/Milestone/XProtect) Recording Server\Logs\DriverFramework_VideoFileImportDriver.log

2024-12-17 15:50:41.483+09:00 INFO - Driver: Loading video definition: <?xml version="1.0" encoding="utf-16"?>

2024-07-12T10:48:13.1883714+09:00

PT8S

Ready

[C:\Users\Administrator\Desktop\Video\factory.mp4](file:C:/Users/Administrator/Desktop/Video/factory.mp4)

2024-12-17 15:50:41.487+09:00 ERROR - Execute: Device Command DefineImportFile - file not loaded for 0776e03c-054d-4ce5-9879-46eb6d3d95de with <?xml version="1.0" encoding="utf-16"?>

2024-07-12T10:48:13.1883714+09:00

PT8S

Ready

[C:\Users\Administrator\Desktop\Video\factory.mp4](file:C:/Users/Administrator/Desktop/Video/factory.mp4)

2024-12-17 15:50:41.488+09:00 ERROR - Method DriverCommand throw exception: DefineImportFile - file not loaded for 0776e03c-054d-4ce5-9879-46eb6d3d95de with <?xml version="1.0" encoding="utf-16"?>

2024-07-12T10:48:13.1883714+09:00

PT8S

Ready

[C:\Users\Administrator\Desktop\Video\factory.mp4](file:C:/Users/Administrator/Desktop/Video/factory.mp4)

; at VideoFileImportDriver.Commands.DefineImportFileCommand.Execute(String deviceId, String parameter)

at VideoOS.Platform.DriverFramework.Managers.CommandManager.VideoOS.Platform.DriverFramework.Managers.ICommandExecutor.ExecuteCommand(String deviceId, String commandId, String parameter)

at VideoOS.IO.Drivers.DriverFrameworkProcess.DriverProcessServiceImplementation.DriverCommand(Int32 sessionId, String deviceId, String command, String parameters)

I am guessing that the driver you implemented does not work like it is suppose to. Guessing further that the portion of the driver that reads a mp4 file, decodes it, or transmits the data is not working correctly. I am guessing as I have very limited knowledge of what you developed.

Try to debug using - https://developer.milestonesys.com/s/article/debugging-a-MIP-Driver-Framework-driver-how-to

The VideoFileImportDriver is a sample code provided within the forum posts by Milestone Systems, not a newly developed one.

Thank you for guiding me through the debugging method. I will give it a try.

I was able to import video files using the VideoFileImportDriver.

I have a further question. Is there a way to verify that the video files were correctly imported besides playback of the recorded data on the SmartClient?

For example, would confirming that there are no errors in the DeviceHandling.log suffice?

The full verification would be to verify the data by doing a playback or similar. I think everything else will be less secure, but it will be a matter of opinion how bulletproof a verification needs to be.

I would like to know about objective methods for verification. Could you suggest any other methods? It doesn’t matter that the method isn’t a full verification. Could checking the DeviceHandling.log be considered as one of those methods?