In a single run you will get 4 separate files as follows,
- a GIF animation
- a PDF animation
- a MP4 video
- a slide that contains a PDF animation and imports a MP4 video as shown in the figure below
Requirements
- ImageMagick must be installed and its path must be registered to PATH system variable.
- FFMPEG must be installed and its path must be registered to PATH system variable.
How to compile
The following input file, named as main.tex
, must be compiled with pdflatex -shell-escape main
. WARNING: If your OS is not Windows, then please adapt the Windows shell command to your OS shell command.
% this filename is main.tex
% compile it with "pdflatex -shell-escape main" (without the quotes)
\documentclass[mathserif]{beamer}
\usepackage{filecontents}
% Create a PDF file that consist of some pages
\begin{filecontents*}{frames.tex}
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\multido{\i=5+5}{72}
{
\begin{pspicture}[showgrid=false](-2,-2)(2,2)
\psparametricplot[algebraic,plotpoints=1000,linecolor=red]{0}{\i}{2*sin(7*t*Pi/180)|2*cos(11*t*Pi/180)}
\end{pspicture}
}
\end{document}
\end{filecontents*}
\immediate\write18{latex frames}
\immediate\write18{dvips frames}
\immediate\write18{ps2pdf frames.ps}
% sometimes you need to disable auto rotate in ps2pdf. Please follow up if you really need it!
% delete auxiliary files generated by the 3 commands above.
\makeatletter
\@for\x:={tex,dvi,ps,log,aux}\do{\immediate\write18{cmd /c del frames.\x}}
\makeatother
% convert to GIF animation
\immediate\write18{convert -delay 5 -loop 0 -density 75 -alpha remove frames.pdf Lissajous.gif}
% convert to MP4
\makeatletter
\immediate\write18{convert -density 600 -alpha remove frames.pdf frames-\@percentchar04d.png}
\immediate\write18{cmd /c if exist Lissajous.mp4 del Lissajous.mp4}
\immediate\write18{ffmpeg -r 5 -i frames-\@percentchar04d.png -vcodec libx264 Lissajous.mp4}
\immediate\write18{cmd /c if exist frames-*.png del frames-*.png}
\makeatother
% convert to a single PDF animation
\begin{filecontents*}{Lissajous.tex}
\documentclass[preview,border=12pt]{standalone}
\usepackage{animate}
\begin{document}
\animategraphics[controls,loop,autoplay,scale=1]{10}{frames}{}{}
\end{document}
\end{filecontents*}
\immediate\write18{pdflatex Lissajous}
% delete auxiliary files generated by the above command.
\makeatletter
\@for\x:={tex,log,aux}\do{\immediate\write18{cmd /c del Lissajous.\x}}
\makeatother
\usepackage{animate,media9}
\begin{document}
\begin{frame}[t]{Lissajous in action}
\begin{columns}[T]
%=============
\begin{column}{0.5\textwidth}
\begin{block}{PDF Animation}
%\animategraphics[controls,autoplay,loop,scale=<integer>]{<frame rate>}{<PDF filename without extension>}{<left blank>}{<left blank>}
\animategraphics[controls,autoplay,loop,scale=1]{10}{frames}{}{}
\end{block}
\end{column}
%=============
\begin{column}{0.5\textwidth}
\begin{block}{MP4}
\includemedia[
activate=onclick,
width=\linewidth,height=\linewidth,
addresource=Lissajous.mp4,
flashvars={%
source=Lissajous.mp4%same path as in addresource!
&autoPlay=true%optional configuration
&loop=true%variables
}
]{}{VPlayer.swf}
\end{block}
\end{column}
%=============
\end{columns}
\end{frame}
\end{document}
Notes:
The auxiliary file named frames.pdf
must be removed manually because I cannot remove it from within main.tex
. If you know how to do this, let me know!
\includegraphics{<file-name.gif>}
not work? – Peter Grill Sep 25 '12 at 16:46pdftex
was being developed,gif
format was encumbered with a software patent that applied to its compression method (lzw). there are several free software projects that avoidedgif
, in that context, andpdftex
was one of them. it's a pity, since (as sthiadhi says) motion gif is one of the easiest motion formats to handle. – wasteofspace Sep 25 '12 at 20:21