On a network camera I've many records. Each record has many tracks (audio, video and Metadata). To create a new record on a camera, you must restart the recording.
With ONVIF profile G I would like to retrieve each record, so I use the GetMediaAttributes method in a C++ code.
#include "soapSearchBindingProxy.h"
std::unique_ptr<SearchBindingProxy> deviceSearchBindingProxy = std::unique_ptr<SearchBindingProxy>(new SearchBindingProxy());
_tse__GetMediaAttributes GetMediaAttributes_tmp;
_tse__GetMediaAttributesResponse GetMediaAttributesResponse_tmp;
GetMediaAttributes_tmp.Time = 0;//from beginning
deviceSearchBindingProxy->GetMediaAttributes(&GetMediaAttributes_tmp, GetMediaAttributesResponse_tmp);
the response doesn't give me all the record list, it contains just 1 record. The records on camera are melted in that record, but I need to retrieve each record separately.
Is my implementation correct to retrieve the list of records?
I've tested 3 cameras from different manufacturers recently and I believe the only way is to retrieve recorded events and then use RTSP to get audio/video fragments using timestamps obtained from this events. Event types vary between cameras.
All 3 cameras had also their own custom APIs to search and retrieve recordings (and this was the way distributors were recommending), but this is not related to ONVIF.