Creating movies from IDL
[Updated, 21-Oct-2021]
For presentations or web-pages I often need to create movies
from IDL showing, e.g., the evolution of a solar feature with time. This
page
explains how I do this.
You can make movies directly from IDL using the
IDLffvideowrite object, and I give more information and an
example on a
separate
webpage. The movie will generally not work
through a web browser but it should be fine for a
Powerpoint or Keynote presentation,
The alternative is to write out individual frames, and then use a
separate software package to put the frames together to a
movie. You used to be able to do this with QuickTime on the Mac,
but not any more. My recommendation is to use ffmpeg.
Choosing a movie format (mp4 and webm)
The
most common format is mp4 and this is generally
recommended when you are making movies for presentations (Powerpoint,
Keynote), but you have to be careful with the codec used. The best
codec is "h.264" but IDL can not create a movie with it due to license
restrictions. The default IDL codec is fine for presentations, but not
if you want to embed your movie in a web browser.
The webm format is promoted by Google and it has the advantage
of being royalty-free, thus movies can be created from IDL directly
without any problem. The main disadvantage is that Apple's Safari
browser does not support the format, so your webm movies embedded in a
web page will not work.
I've created a webpage with the same movie created in webm and
mp4 formats. You can use this to compare how embedded movies work with
different browsers.
Using ffmpeg (Mac)
The ffmpeg package is not installed on Macs by default, and
so you'll need to install it separately. I used Homebrew for
this.
After you've written your image frames from IDL into files
image0000.png, image0001.png, etc., then you can create an mp4
movie with:
> ffmpeg -r 15 -i image%04d.png -vcodec libx264 -pix_fmt
yuv420p -crf 20 movie.mp4
Using "image*.png" seems to fail, so use %04d instead (%03d
if you're using image000.png).
The option "-r 15" sets the frame rate to 15.
The option
"-vcodec libx264" will give you a movie in the standard h.264
mp4 format, which means the movie should play on any web
browser.
The option "-pix_fmt yuv420p" sets the pixel format to
3 colors and 12 bits per pixel (no need to change this!).
The
option "-crf" controls the "lossiness" of the movie: 0 is
lossless, 17 is "visually lossless", 23 is default, and 51 is
worst quality.
Embedding the movie in html
To embed the movie in a webpage, you need to use the html5
video container. I suggest going to one of my webpages
and viewing the page source for the video on this page to see how it
works.
The option "controls" will display play and stop buttons when
the movie is played, while "loop" makes the movie automatically loop.
Page maintained by Dr Peter R Young.
|