12-12-2011 08:57 AM
Hi everyone.
I am building a simple VI that grabs images and saves them to an AVI file. I am using IMAQdx and the Vision Development toolkit on Win7Pro 64bit.
The challenge is that the standard "Save to AVI" functions in the 64bit Vision Toolkit appear to be malfunctioning accord to this thread. It only lets you choose from 1 of 2 codecs. I have installed tons of codecs, but I can't seem to use them. Tested it on two different machines. The only two codecs that are appearing when calling "IMAQ AVI Get Filter Names.vi" are DV Video Encoder and MJPEG Compressor codecs, which is kind of strange.
So my challenge: Is there some kind of workaround? Any ideas how I can save an AVI in a different manner? Or how I can get more codec choices?
Thanks!
12-13-2011 01:45 PM
Hi josborne,
Unfortunately there isn't a workaround at this time. As the thread you linked mentioned, CAR #304337 has been filed and R&D is aware of this issue. Currently, the only ways around this issue are to use the two existing codecs or to revert your entire application to the 32-bit version of LabVIEW. I'm sorry I don't have better news for you at this time.
Mychal F
12-13-2011 05:56 PM
Assuming the problem is a lack of 64 bit codecs (most codecs are 32bit, which makes them unavailable to 64bit programs). Then if you're desperate you could try the SVN version of ffdshow tryouts of which there is a 64bit version.
I use an older 32bit version, and takes a bit of work to setup. Which codec you use is set through the ffdshow VFW control panel, LabVIEW just uses the "ffdshow Video Codec" filter. I use the loss-less HuffYUV codec then compress that file later with mencoder. Of course using a bleeding edge SVN copy could be buggy. I'm not sure if it's needed but on my setup I have LabVIEW.exe and the name of my compiled executable in ffdshow's white list (under video decoder configuration/Direct Show Control/Use ffdshow only in).
Another option is to have the video compression handled by a separate 32 bit LabVIEW program. You would need to pass the frame information between the two programs. I would probably use IMAQ Flatten to string and TCP/IP to do most of the work, all this copying data around will probably slow things down quite a bit though.