MIP SDK 2018, Missing File for LiveViewer

I just answered my own question. I noticed there was now Program Files (x86) SDK folder. I copied over CopyMedia.bat into the x86 bin folder, then changed all the VideoOS dlls to the x86 versions… and live video now streams.

THANK YOU, THANK YOU, THANK YOU

I’m thrilled to hear that the problem has finally been solved. And sorry for not mentioning that the 32-bit redist installer installs its files to the Program Files (x86) folder.

Wishing you a smooth ride with the rest of the project!

/Peter

Peter, a few questions:

  1. Is there a way to tell if a Camera has PTZ ability? (I am using the ImageViewerControl in my Integrator)
  2. Is there a way to tell if a Camera is online and/or streaming and/or connected?
  3. In the example code, I see PostMessage and SendMessage both used for PTZ commands. Since a response is never used by either, can I always do a PostMessage instead of the SendMessage?
  4. PlaybackSpeed, what is the default value for standard play? (if it is 1.0, can I presume that 2.0 is 200% faster)
  5. Playback: When wanting a specific datetime to play, how is that passed in when not using the PlaybackController on-screen? (I’ve tried both PlaybackTime and SetSequence, but neither give me desired time. Is that time in UTC or local?)
  6. When I am sending in the message to use PTZ, my camera first does what it is told, then quickly snaps back to the starting position. Why/how would this happen? (my code is copied out of the PtzAndPresets demo project, but is quite simple to understand) (video attached)
  1. Item.Properties.ContainsKey(“PTZ”) && string.Compare(Item.Properties[“PTZ”], “Yes”, true) - can also be seen in PTZAndPresets sample
  2. Have a look at the System Status Client Console sample
  3. Yes
  4. 1 is default and meaning normal speed - 2 is double that speed
  5. Have a look at the Video Viewer – Individual Playback sample
  6. Without seeing the actual code this is fairly difficult to answer. I would assume that you are either sending a goto home command or have a rule doing that in either the VMS or on the camera.

#5: Your answer seems almost exactly what I’m looking for. It is easy to use and control. However, we required the ability to pass in a StartDateTime and a Duration (or I calculate the EndDateTime) . This allows us to playback a video from any point in time. The PlaybackUserControl seems to do this… though it isn’t always retrieving the correct video for me. And it doesn’t seem to actually play the video. It acts like a still shot.

#5 I looked at MediaPlaybackViewer2015. This has a PlaybackController with a property called PlaybackTime. I would at least expect that setting the playback time would make the video start at that time. But setting it literally does nothing. If I set the SetSequence(start,end), it also does nothing.

#5 Is there a more extensive example of how the PlaybackControl works? Maybe one that passes in the PlaybackTime, and controls its playback direction.

The “Video Viewer - Independent Playback” (http://doc.developer.milestonesys.com/html/index.html?base=samples/videoviewer2playback_sample.html&tree=tree_2.html) shows exactly how to work with PlaybackController. Only thing missing from what you request is how to go to the specific time, but it is very similar to how the other commands works. Try have a look at the Command property for the PlaybackCommandData class - one of the values to use is PlaybackData.Goto (have a look at http://doc.developer.milestonesys.com/html/index.html?base=miphelp/class_video_o_s_1_1_platform_1_1_messaging_1_1_playback_data.html&tree=tree_search.html?search=playbackcommand).

Also please be aware of difference between PlaybackController and PlaybackUserControl. The former is a component handling the actual playback control, whereas the latter is just a user control that will pass on commands to a PlaybackController.

FANTASTIC! The Goto command was the key to success. I now have a working Playback controller! Thanks so much!

Peter, using the Video Viewer, is there a way to get the same camera to both play live and be in Playback mode. (while Playback is in use, the Live would continue being live)

Peter, is there a way of taking a snapshot of the screen? (during either Live video and/or Playback)

I was looking at the LiveJPEGSaver demo, but it doesn’t seem to be what I’m looking for.

As to concurrent live and playback using the ImageViewerControl (I assume that is what you refer to when you say Video Viewer?) you cannot do both at the same time within the same ImageViewerControl, but you can have multiple controls switching back and forth between live and playback independently. Try have a look at “Video Viewer - Independent Playback” sample as it is showing exactly that.

For taking a snapshot the ImageViewerControl has the GetCurrentDisplayedImageAsBitmap methods (file:///c:/program%20files/milestone/mipsdk/html/index.html?base=miphelp/class_video_o_s_1_1_platform_1_1_client_1_1_image_viewer_control.html&tree=tree_search.html?search=imageviewercontrol), but they only get what is shown in the control itself - not the entire screen. For the entire screen you will need to look elsewhere.

Perfect Peter! Thank you. I actually think I am done with questions. :slight_smile:

Deployment Issues: Attached are all the deployment files for our x86 installation that get installed into the same folder. With this, it enables our video system to connect to the Milestone server and get the cameras and their properties. We cannot however stream video. (we get a grey camera screen)

I have attempted to figure out which file(s) are missing, but have yet to figure it out. In the midst of all the deployment files, I have verified that all of them are x86 with the exception of “cudart64_80.dll”, which is indeed in the Milestone x86 programs folder.

If we install or not “MIPSDK_Redist_Installer_x86_2018R1.msi”, it doesn’t seem to make a difference in how it runs.

Any insight or help on deployment, would be greatly appreciated.

For a more extensive test, I copied all of the files in my entire bin folder, which consists of all developed video integrators over the past few years, to my test system. Upon doing so, I still only get the grey cameras.

The only difference now between the 2 systems, is the fact that I have the SDK installed on my development machine.

Looking at the screenshot of the file list, I am missing a great number of files, e.g. VideoOS.Platform.SDK.dll, which is critical, but also a number of other files.

Please be aware that simply installing the x86 redist will not make the files be used by your integration. You need to include them in your own deployment instead. We are aware this is not optimal and it is something we have on our backlog.

Could you please try to copy all the files from the [c:\Program](file:c:/Program) Files (x86)\Milestone\MIPSDK\Bin\ folder to your deployment folder (after having installed the x86 redist)?

Peter, I just discovered that Playback works, even though live streaming does not.

What is causing the live streaming to not work, is an unregistered dll. Though the DLL seems to work fine until it is attempted to be added to the control. Have you seen this happen before?

Have you added the VideoOS.UI.manifest file to your project and referenced it in the Application->Resources project settings? You can see it in many of the component samples.

I had not added the VideoOS.UI.manifest file, because my project is a Class Library (dll), and I cannot add a manifest file to a Class Library. Any other suggestions?

I am not an expert regarding side-by-side usage of COM components, so not exactly sure what the options are here, but as I see it you will either have to register the component on the client machine (using regsvr) or find a way of adding the description to a manifest file for either the executable or the dll (if that is at all possible).