如何通过ONVIF协议获取NVR中摄像头的RecordingToken

海康的NVR,支持 ONVIF协议。
开发平台: .Net Core 3.0

我的调用顺序是:

[onvif/search_services]  GetRecordingSummary
[onvif/search_services]  FindRecordings
[onvif/search_services]  GetRecordingSearchResults

在 GetRecordingSearchResults 的返回对象的Source中,没有任何信息。没有办法与具体的摄头对应。无法确认Recording是对应的哪一个摄像头。

哪位大佬有ONVIF回放录像的示例? 最好是可以直接运行的。

这个NVR感觉得很奇怪,用Happytime onvif client也是一样无法访问回放视频。不知道是海康NVR对ONVIF的支持不够好,还是软件有问题。

1、需要先调用RecordingBindingProxy::GetRecordings();

_trc__GetRecordingsResponse recordingsRep;
_trc__GetRecordings recodingReq;
RecordingBindingProxy::GetRecordings(&recodingReq ,&recordingsRep);

2、然后通过_trc__GetRecordingsResponse返回的结果中的tt__GetRecordingsResponseItem来获取

_trc__GetRecordingsResponse recordings;
        onvifRecoding->getRecoding(recordings);
        for (auto it = recordings.RecordingItem.begin(); it != recordings.RecordingItem.end(); ++it) {
            tt__GetRecordingsResponseItem * pRecordings = *it;
            cout << "recoding token = " << pRecordings->RecordingToken;
            tt__RecordingConfiguration *pRecordingConf = pRecordings->Configuration;
            if (pRecordingConf->Source) {
                cout << "Recording SourceId = " << pRecordingConf->Source->SourceId.c_str();
                cout << "Recording Name = " << pRecordingConf->Source->Name.c_str();
                cout << "Recording Location = " << pRecordingConf->Source->Location.c_str();
                cout << "Recording Description = " << pRecordingConf->Source->Description.c_str();
                cout << "Recording Address = " << pRecordingConf->Source->Address.c_str();
            }
        }

https://www.cnblogs.com/kumukim/p/11006599.html

大佬问一下,GetRecordingSearchResults这个接口可以交流一下不?