It is now possible to embed videos in Beamer presentations under Linux. It’s stable and works well.
The strategy is to use acroread and a flash player to play .flv files. Credit to this post for a lot of this work. Here’s how to do it:
The short version:
1. Get acroread version 9.4.1 [local mirror]
2. Download the example.
3. Convert your video to flv (mess with the resolution to get smooth playback).
ffmpeg -i movie.avi -sameq -s 960x540 movie.flv
Now the explanation:
1. Uninstall acroread using apt-get (which isn’t likely to be the right version)
sudo apt-get remove acroread
2. Download version 9.4.1 of acroread from Adobe (note that the i486 version will still work on 64-bit systems) [FTP page] [local mirror]
3. Mark the package executable:
cd your-download-directory chmod +xx AdbeRdr9.4.1-1_i486linux_enu.bin
4. Install acroread:
./AdbeRdr9.4.1-1_i486linux_enu.bin
I installed to /opt/acroread, so I run it like so:
/opt/acroread/Adobe/Reader9/bin/acroread
Credit goes to Jens Nöckel’s post for figuring this out.
1. Download the beamer/flash player package [local mirror]
2. Extract them all to the same directory as your .tex file (not in a /flashmovie/ subdirectory)
1. Get ffmpeg
sudo apt-get install ffmpeg
2. Convert your movie to a .flv:
Note: You might have to resize your movie if the resolution is high to get smooth playback. You can do this with the -s flag as below.
ffmpeg -i movie.avi -sameq -s 960x540 movie.flv
1. Add the package to the very first line of your .tex
\RequirePackage{flashmovie}
% it is necessary to use "\RequirePackage{flashmovie}" because beamer
% also uses "\pdfminorversion". see flashmovie.sty for an explanation.
2. Embed the movie
\frame
{
...stuff...
\flashmovie[engine=flv-player,auto=1,controlbar=0]{movie.flv}
...stuff...
}
I wanted to use black backgrounds and remove the control bar so I changed line 580 of flashmovie.sty to:
/FlashVars (flv=#2&margin=0&showvolume=1&showstop=1&showtime=1
&showplayer=never&videobgcolor=0x000000\flashmovieautovari
\flashmovieimagevari\flashmovieloopvari)
(note this was line wrapped and should be one line)
If you want a different color change the value in videobgcolor to something else (it’s like HTML colors).
(You’ll find all this and more in my example.)
The default beamer templates don’t support full-frame movies very well. Here’s my functions; put them right before \begin{document} for a full frame movie.
%%%%%%%%%%%%%%%% Useful commands %%%%%%%%%%%%%%%%
\newcommand\CopyrightText[1]{%
\begin{textblock*}{\paperwidth}(0\paperwidth,.97\paperheight)%
\hfill\textcolor{white}{\tiny#1}\hspace{3pt}
\end{textblock*}
}
\newcommand{\citeFoot}[1]
{
\rule{\linewidth}{0.5pt}
{\scriptsize #1}
}
\newcommand{\fullFrameImage}[2]
{
{
\usebackgroundtemplate{\includegraphics[height=\paperheight]{#1}}
\frame
{
\CopyrightText{ #2}
}
}
}
\newcommand{\fullFrameMovie}[2]
{
{
\setbeamertemplate{background canvas}[vertical shading][bottom=black,top=black]
%\setbeamercolor{background canvas}{bg=black}
\frame
{
\begin{textblock*}{\paperwidth}(0px,0px)%
\flashmovie[width=\paperwidth,height=0.96\paperheight,engine=flv-player,auto=1,controlbar=0]{#1}
\end{textblock*}
\CopyrightText{#2}
}
}
}
\newcommand{\blackframe}
{
{
\setbeamertemplate{background canvas}[vertical shading][bottom=black,top=black]
\frame[plane]{}
\addtocounter{framenumber}{-1}
}
}
%%%%%%%%%%%%%%%% End useful commands %%%%%%%%%%%%%%%%
To use it:
\fullFrameMovie{movie.flv}{\textcircled{c} 1990 Someone Here}
05/19/12