10137 Rate this article:
No rating


Dain Cilke
The routines QUERY_VIDEO, READ_VIDEO and WRITE_VIDEO, introduced in IDL 8.2.3, act as procedural wrappers around the IDLffVideoRead and IDLffVideoWrite classes. These routines are intended to provide a simplified interface for working with video data, analogous to the QUERY_IMAGE, READ_IMAGE and WRITE_IMAGE routines for working with images. They should also evoke the look and feel of XINTERANIMATE and the old MPEG routines (MPEG_OPEN, MPEG_PUT, etc.). Here's a simple example of making a movie with WRITE_VIDEO. Start by initializing a video file with a call to WRITE_VIDEO, returning a handle:
outfile = 'write_video_ex.avi'
video_dims = [640, 512]
write_video, outfile, handle=h, video_dimensions=video_dims, video_fps=24
The handle h is used as a reference to the open file. Next, display a contour plot:
c = contour(dist(40), c_value=indgen(6)*5, rgb_table=72, $
   /fill, planar=0, dimensions=video_dims, $
   title='IDL 8.2.3 WRITE_VIDEO Example')
Now rotate the contour plot 181 times and take a screen grab on each iteration. Write the grab to the video file opened above, using the handle as a reference.
for i=0, 180 do begin
   c.rotate, 2, /zaxis
   sgrab = c.copywindow()
   write_video, outfile, sgrab, handle=h
Although the handle is specified, the outfile parameter is still needed in the call to WRITE_VIDEO. Last, close the video file:
write_video, /close, handle=h
The file write_video_ex.avi should be written to your current IDL directory. The movie is best viewed on repeat in your favorite movie player. (Be careful, though, it's hypnotic.)