LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Rapid screen capture for movie export

Hi all, got a new poser which I'm unable to solve: Smiley Very Happy
 
I want to create a movie capture of a user working with one of my vi's. I intend to embed the movie into a Powerpoint presentation to demonstrate the vi. It will be fairly short, only about 20 seconds long.
 
In a separate vi that runs in parallel with the vi whose front panel is to be captured, I've been playing with Invoke Node's "Get Panel Image", saving each image in an AVI movie using the IMAQ AVI functions. I can get fairly good frame rates of about 10 fps, but the image doesn't show exactly what you see on the Front Panel. For example, the mouse isn't present so there'll be no visual pointer to track with the eye, and when selecting ring lists, for example, the movie doesn't show the list being drawn, it only updates when the new value is selected. So it's not particularly useful or exciting. In fact, it's fairly dull. Smiley Indifferent
 
Alternatively, I've tried to use Screen Capture, using the Simulate Keyboard function to simulate a Snapshot. However, that takes far too long to perform, and I get frame rates no better than about 1 fps. I'm ideally looking for at least 10 fps.
 
Does anyone know of an alternative or better way to take window snapshots quickly? I don't mind storing the images in a large array whilst capturing the front panel to reduce CPU demand and speed up fps. I can then process the images at the end when all frames have been captured.
 
I've attached my Invoke Get Panel Image code.
 
Many thanks in advance for any input and advice I get Smiley Happy
 
Richard.
 
 
0 Kudos
Message 1 of 5
(3,133 Views)
Is it a sport to create it yourself?

Otherwise there many who did it before you.

http://all-streaming-media.com/record-video-stream/screen-capture-software.htm

André
Regards,
André (CLA, CLED)
Message 2 of 5
(3,130 Views)

Hi André,

Many thanks for the link, I will certainly try some of these Smiley Happy

Although not necessary to create this functionality myself, I always love to solve a challenge, and in my opinion there's virtually nothing LabVIEW cannot do! Smiley Very Happy

I'd still like to try to write a LabVIEW vi that does this itself, if anyone thinks it is possible and has any ideas?

Richard

0 Kudos
Message 3 of 5
(3,125 Views)
If you really want to do this, you have to use the same tricks of the applications André suggested.


Probably (how I would do it):


Wait for a repaint message from windows (not sure about this, you won't get the mouse movement).
Get an image with BitBlt functions.
Store these images in (persevered) memory.
Save them in a separate thread.


It won't be easy to do in LabVIEW, since you can't use the header file values easily. Also, getting windows messages it not easy. You have to hook the normal windows proc. There are some tools to do this, I think at OpenG.


I Agree, there is not much LabVIEW can't do. But these sort of things have been done in c/c++ and basic for many years, and has not been done a lot in LabVIEW. So it's more a matter of available example code that makes it more difficult to do in LabVIEW.


Regards,


Wiebe.
Message 4 of 5
(3,102 Views)


I'd still like to try to write a LabVIEW vi that does this itself, if anyone thinks it is possible and has any ideas?

Richard


G Toolbox (http://www.geocities.com/gzou999/index.html)  SnapView.vi can capture any part of the screen including the cursor, and return with an image cluster.

 

Get image cluster and convert it to image for AVI is not efficient and slow.  Unless you want to alter the pixels in the image cluster.

I would download a freeware application, just for speed.


 

George Zou
0 Kudos
Message 5 of 5
(3,083 Views)