How to search for camera recordings or for camera recordings over VRM with RCPP over CGI?

Question

How to search for camera recordings or for camera recordings over VRM with RCPP over CGI?

📚Overview:

Answer

Here are the example Rcpp commands send via the Http. There are short explanations. For more details check How to do search and replay on Bosch VIP devices and Video Recording Manager (VRM)?

Get the list of files/slices of a replay session

CONF_HD_PARTITION_FILE_INFO (0x0901)

0x0901

Request

Payload Structure

image-20260528-064919.png

Start Time: start time in seconds since Jan. 1st 2000, midnight. - 0x00000000 (means 01.01.2000)

Stop Time: stop time in seconds since Jan. 1st 2000, midnight. - 0xFFFFFFFF (means 07.02.2136)

maxEntries: Max Number of entries

Res: reserved

Payload Structure (sequence of)

image-20260528-071219.png

Example Requests:

Request to a camera

a. Open VLC and start RTSP session - rtsp://172.16.50.10/?rec=1&rnd=777

b. In a browser request the sessionId – http:// 172.16.50.10/rcp.xml?command=0x0ae8&type=T_DWORD&direction=READ&protocol=TCP&num=777

Or – http://172.16.50.10/rcp.xml?command=0x0ae8&type=T_DWORD&direction=READ&protocol=TCP

Seems the camera does not need the rtsp session.

 

0x0ae8 2792 T_DWORD READ 0 0x000000002TCP 0x4c880039 1283981369

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<rcp>

<command>

<hex>0x0ae8</hex>

<dec> 2792</dec>

...

</command>

<type>T_DWORD</type>

<direction>READ</direction>

<num>0</num>

<idstring/>

<payload/>

<sessionid>0x00000000</sessionid>

<auth>2</auth>

<protocol>TCP</protocol>

<result>

<hex>0x4c880039</hex>  this is the sessionId hex

<dec> 1283981369</dec>  this is the sessionId decimal

...

</result>

...

</rcp>


c. http://<camera_ip>/rcp.xml?command=0x0901&type=P_OCTET&direction=READ&protocol=TCP&sessionid=0x4c880039&payload=0x00000000FFFFFFFF0000000400000000

 

payload is 0x00000000FFFFFFFF0000000400000000

✔ Start: 0 (year 2000)
✔ End: max (all recordings)
✔ maxEntries: 4

 

<rcp>

<command>

<hex>0x0901</hex>

<dec> 2305</dec>

...

</command>

<type>P_OCTET</type>

<direction>READ</direction>

<num>0</num>

<idstring/>

<payload/>

<sessionid>0x4c880039</sessionid>

<auth>2</auth>

<protocol>TCP</protocol>

<result>

<len>64</len>

<str>31 4c 06 b2 31 4c 0d 19 02 00 00 40 00 00 00 01 31 4c 1e 27 31 4c 26 b0 02 00 00 40 00 00 00 02 31 4c 28 d2 31 4f f4 9a 02 00 00 40 00 00 00 03 31 4f f4 c5 31 4f f5 f9 02 00 00 40 00 00 00 04 </str>

...

</result>

...

</rcp>

How to read the result:

Entry 1

Start: 0x314C06B2
End:   0x314C0D19

  • Start ≈ 2025-03-27 06:11:30

  • End ≈ 2025-03-27 06:38:49


 Entry 2

Start: 0x314C1E27
End:   0x314C26B0

  • Start ≈ 2025-03-27 07:41:27

  • End ≈ 2025-03-27 08:16:16


Entry 3

Start: 0x314C28D2
End:   0x314FF49A

  • Start ≈ 2025-03-27 08:27:30

  • End ≈ 2025-03-27 23:16:10


Entry 4

Start: 0x314FF4C5
End:   0x314FF5F9

  • Start ≈ 2025-03-27 23:16:53

  • End ≈ 2025-03-27 23:21:29

 

Request to VRM

It is done only with 0x0901 and num=<hereTheTrackId> of the camera in interest

"num=<hereTheTrackId> instead, e.g. camera that has trackID0169 use the following:

https://172.16.50.102/rcp.xml?command=0x0901&type=P_OCTET&direction=READ&num=169&payload=0x00000000FFFFFFFF0000000400000000

payload is 0x00000000FFFFFFFF0000000400000000

✔ Start: 0 (year 2000)
✔ End: max (all recordings)
✔ maxEntries: 4


Example result:

<result>

<str>31 64 2b d1 31 64 2d f1 84 04 63 40 05 d3 00 00 31 64 30 11 31 64 41 11 84 04 63 40 05 d4 00 00 31 64 43 31 31 68 34 9f 84 04 63 40 05 dd 00 00 31 68 38 e0 31 6a 01 e1 84 04 63 40 01 f1 00 00 </str>

</result>

</rcp>

 

Decoded Details

  • Time Format: The times are in seconds since January 1st, 2000.

 

Example (Slice 1):

Start: 0x31642BD1 ≈ July 5, 2026, 11:47:29 AM.

End: 0x31642DF1 ≈ July 5, 2026, 11:56:33 AM.

Duration: Approximately 9 minutes and 4 seconds.


Clarification on the number or results 0x0901 will return:

  • 0x0901 - returns max 256 results. is a limitation only for Cameras. This limitation is not valid for VRM.

  • if maxCount is set to 0xffffffff and the rcpp command is send to VRM, the response will contain all results at once.

 

There are two ways to request from VRM the recording of a camera for long period, as example lets take one month from. For both ways the assumption is that the recording is continuous:

  1. maxCount is set to 0xffffffff and the rcpp command is send to VRM - get all the results at once

  1. If there are multiple gaps in the recordings and the expectation is that there will be way to many results for single request, then set maxCount to a particular number (use 256 if you want), then once you receive your 256 results, you can send a new request, this time you will use as a starTime the time from the last result from your previous request.