Pelco Developer Network (PDN)

Can I use Pelco API in combination with VideoXpert SDK

Can we use Pelco API in combination with VideoXpert SDK ?

When we want to upgrade an existing integration with Pelco Endura SDK and Pelco API webservices to use the VideoXpert product could we keep on using the Pelco API ?
When this is true I wonder how to retrieve the device service index that is needed to call some WSDL's (e.g. ScriptControlV1.wsdl).

Hello there, thank you for your post.

To directly answer your question in a single statement: I really wouldn't recommend trying that route.

Technically, you could probably still use Pelco API to communicate with the Pelco cameras... however these days we encourage our partners to instead use ONVIF for Pelco camera development.

Also, communicating with a VideoXpert system does require the use of the VideoXpert SDK. Unlike the old Pelco Endura SDK (which was a wrapper for Pelco API), the VX SDK API is not published publically or available for partners to directly communicate with, which is why the SDK is required.

This means that if you did try to navigate a route of using both Pelco API and VX SDK, you would end up with a lot of redundancy. In order to obtain information from a VX System to make use of Pelco API, you'd need other network snooping tools or methods to find the IP addresses -- or use the VX SDK to obtain some device information, and make the leap from using that to revert back to the Pelco API methods... it really wouldn't be idea or recommended.

Really, if you're going to be writing or updating a development to work with VideoXpert, I would strongly encourage you to make the transition to use the VideoXpert SDK itself. It is quite probable that you wouldn't need to use any other tools with it.

Hi, thank you for your answer.

When we decide to make the transition to use the VideoXpert SDK itself we need to completely rewrite the existing integration with Pelco. We could use the GetDevices method found in the IVxSystem interface to retrieve all the camera and monitor devices. I think that replacing the part of the integration that is using the Pelco API will cost much more effort.

The existing integration with Pelco uses the following Pelco API functions:
- MonitorConfigurationV1
GetLayout()
SetLayout(const int layout)
SetActiveChannel(const int activeChannel)
- ScriptControlV1
ExecuteScript(const UnicodeString scriptName)
- VideoInputV1
Connect(const Connect* parameters)
- VideoOutputV1
Query(const Query* parameters)

Can you tell me if and how it is possible to make the transition to use the VideoXpert SDK ? I think we can use the IVxMonitor interface to get and set the layout and use the IVxRule interface to perform script functionality but I am not sure about the other Pelco API functions we use.

On the other hand when we decide to keep the integration part that is using the Pelco API I think, beside calling the GetDevices function of the IVxSystem interface, we only need to know how to retrieve the device service index that is needed to call the WSDL's. So from our point of view we prefer to keep the part that is using the Pelco API if that is possible.
Can you tell me also if and how we can retrieve this device service index ?

Hello, thank you for the comments. Hopefully I can help to direct you with some additional advice here.

the transition to use the VideoXpert SDK itself we need to completely rewrite the existing integration with Pelco.

Yeah - that is what I recommend doing. I totally and completely understand that is more work than only replacing some pieces of the work that has been done already, however it would be more clean and a lot easier in the long run to do it using the VideoXpert SDK instead.

For the Monitor functionality, I agree that you will want to look at the Interfaces for IVxMonitor.

For the scripting, what do you use scripts for? If you're using them for PTZ commands, you should use IVxPtzController instead.

Regarding the device service index ... I'm not completely sure precisely what value that you're referring to. Do you mean the integer value that was typically at the end of the control URL for the service ... "xxxxx-1" for example? If so, there isn't an ID like that available in a VideoXpert environment. You'll need to use another way to try to get that information, like Device Spy, perhaps, or another UPnP-type tool to query for devices on the network. Usually that value was most often "-1", but not always. Unless what you're asking for is different than what I am thinking of.

Hi, thanks for your advice so far.

In case we indeed decide to use the VideoXpert SDK i.s.o. Pelco API I would like to have some further advice on:
- what to do with SetActiveChannel(const int activeChannel) of MonitorConfigurationV1. I could not find something similar in IVxMonitor.
- how to replace Connect(const Connect* parameters) of VideoInputV1.
- how to replace Query(const Query* parameters) of VideoOutputV1.

We use ExecuteScript(const UnicodeString scriptName) of ScriptControlV1 for Preset only.

Regarding the device service index: it is indeed the value you described.

Another possibility I was thinking of is to replace our existing integration with Pelco API by Onvif.
Do you think that this is feasible and if so will it take less effort than replacing this by VideoXpert SDK ?

No problem, I'm happy to help.

I *believe* that the way monitor and cell selection works is just slightly different in VideoXpert. I see in the docs that IVxMonitor can get a collection of IVxMonitorCells, and each of those has a data source to represent which camera is currently actively streaming on that cell. From there it is a matter of calling SetDataSource to change the data source for any given cell. I do not believe that you need to directly select the cell prior to making those changes. This should help to lower the complexity a little, I think

I'd suggest continuing to review the documentation PDF and also checking out the samples from our GitHub page to verify functionality and test things out against a VX system (VX Pro is available on Pelco.com with a trial license) - these links are on our VX SDK Download page.

For the Script and calling presets, it sounds like IVxPtzController is what you want to use there. Our samples also demonstrate how to use that piece of the SDK.

Regarding switching to ONVIF; that's really entirely up to you. It would likely be a fair replacement for the development work and functionality provided by the Pelco API. Unfortunately you still wouldn't be able to communicate with the VideoXpert system without using the VX SDK, however if you want to limit the use of the VX SDK, you could use it to obtain only what you'd need to have ONVIF API calls to the cameras proceed from there to deliver the live video and PTZ, perhaps.