I wish to display some animations in my beamer presentation. The most trivial way that comes to my mind is to use a gif image. How can I put it in the presentation and what should I use to display it? Is there any other way of doing it?
2 Answers
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!
-
1Related: how to create a GIF animation? and how to create a PDF animation?. Commented Sep 26, 2012 at 7:59
-
-
@AlexG: OK. Thanks. I will update this answer once I am finished trying it. Commented Sep 26, 2012 at 8:15
-
2
-
@cmhughes: Yes it might be rewritten in an arara rule but learning arara will burden us to spend an extra time. Commented Jun 22, 2013 at 19:27
the same without using an external file (the pdf is here: http://perce.de/temp/anim0.pdf):
\documentclass[mathserif]{beamer}
\usepackage{pst-plot,animate}
\begin{document}
\begin{frame}[t]{Lissajous in action}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\begin{animateinline}[%
width=0.9\linewidth,
begin={\begin{pspicture}(-2.1,-2.1)(2.1,2.1)},
end={\end{pspicture}},
controls, %palindrome, %autoplay
]{3}
\multiframe{72}{iA=50+50,iB=5+5}{
\psset{algebraic,plotpoints=\iA,linecolor=red}
\parametricplot{0}{\iB}{2*sin(7*t*Pi/180)|2*cos(11*t*Pi/180)}
}
\end{animateinline}
\end{column}
\begin{column}{0.5\textwidth}
\begin{align}
x(t)&=2\sin(7t)\\
y(t)&=2\cos(11t)
\end{align}
\end{column}
\end{columns}
\end{frame}
\end{document}
-
I downloaded the pdf and viewed it in evince but the animation doesn't work. Do I need any other pdf viewer for this? Commented Sep 25, 2012 at 18:02
-
I suppose that it works only with acrobat– user2478Commented Sep 25, 2012 at 18:06
-
-
I do not need it anyway ...– user2478Commented Sep 25, 2012 at 18:59
-
2@chepukha: run the example with
xelatex
. It does not work withpdflatex
. If you want to use several images then have a look into the documentation ofanimate
, it has some examples.– user2478Commented May 1, 2013 at 18:30
\includegraphics{<file-name.gif>}
not work?pdftex
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.