I am trying to retrieve the audio guid of an audio device but I am unable to do so. We have a PTZ camera with sound coming in a line in. I can see the Microphone input in the Milestone server and sound coming in. Here’s things I tried:
I have connected to the camera using it’s IP address and I was able to hear sound coming in.
I have compiled the AudioLiveRecorder ComponentSample project, connected to the Milestone Server, and was able to record live raw audio and listen to it back again in Audacity.
However, when calling engineManager.getAudioCount(engineName) specifying the correct engine name, I get 0 as a result. Also, if I use engineManager.GetCameraDefaultAudio(engineName, cameraGuid) I get an empty string as a result.
The call is also not working in the ImageViewer_ActiveX Component Sample.
I also included a screenshot listing components on our Milestone server. as you can see, all components are attached to the camera.
Any idea why I am not able to retrieve the audio from the camera using the EngineManager ActiveX? Thank you!
The EngineManger uses the SystemInfo.xml which in c-code XProtect does not include information about microphone devices but only camera device.
PS. Note that the Engine Manager activeX is being discontinued.. http://doc.developer.milestonesys.com/html/index.html?base=emaxhelp/main.html&tree=tree_2.html
Hi Bo,
Thanks for your answer. Is there any way to retrieve the audio guid or configuration xml to be able to use the AudioPlayer ActiveX component? Thanks.
I looked through the doc multiple times and I can only see EngineManager’s functions able to return the audio guid / configuration xml for the AudioPlayer to connect to. It’s also done this way in the component sample for the ImageViewer (which is not working). Should I be looking elsewhere? Thanks.
The EngineManager will not work as it does not support information on audio in c-code.
There could be alternatives depending on the scenario..
-
Use Configuration API and ask for related microphone (MIP SDK 2018 R1)
-
Use Server Command Soap Service and GetConfiguration
-
Make a com wrapper of a piece of MIP Library code. (Explore VideoViewer2WayAudio sample ao.)
It is also on the road map to support audio in the Mobile SDK in the future. (There is no confirmed release schedule on this.)
Thanks for your quick answer Bo and for providing me with alternative solutions.
Hi Bo, I am also wondering.. Would this mean that the code found in the ImageViewer ActiveX component sample for the audio player would work on e-code? Would an e-code licence give information on audio devices and therefore the code provided in the sample would work? Thanks.
ImageViewer activeX and AudioPlayer activeX works the same in e-code and c-code. The EngineManager activeX have a shortcoming on c-code, and yes, that part would work on e-code.
Hi Bo,
I have looked up in our system to find out which licence we are using and have found out we’re using XProtect Professional+. It seems odd to me that to enable the EngineManager ActiveX retrieve to microphone information, we would need to “downgrade” to XProtect Professional, which has less features than Professional+.
Is there any way we could make our Professional+ product work on E-Code, without having to change our licence?
Also, for my understanding .. what is the meaning between E-Code and C-Code, as
it’s not clear to me yet?
If it’s not possible to make our current product (Professional+) run on E-Code, can you confirm that switching to a less featureful version (Professional) would enable us to retrieve the microphone information using the EngineManager ActiveX? Thanks.
In the MIlestone line of products there is two “codebases”. Codebase means they have been developed using the same source code.
The older original codebase is e-code, the name taken after the flagship product in that codebase named XProtect Enterprise. Other products in that code base are XProtect Professional and Express.
The newer code base is c-code, the name taken after XProtect Corporate. Other c-code products are XProtect Expert and all the Plus products.
Because the activeX components were developed while e-code was the only codebase they are optimized for e-code. Because the activeX components are now marked for retirement there will be no development work to target the shortcomings of the EngineManager activeX towards c-code. Milestone hopes that other components or solutions will be used instead of the activeX components being retired.
I can confirm the EngineManager activeX works better e-code. If you choose to use EngineManager activeX it will work better with XProtect Professional.