From 4b5278d501074b7f91fd9dece761969c86bec8ca Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 5 Dec 2009 01:23:16 +0000 Subject: new latex package flashmovie (4dec09) git-svn-id: svn://tug.org/texlive/trunk@16296 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/flashmovie/flashmovie.sty | 297 +++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/flashmovie/flashmovie.sty (limited to 'Master/texmf-dist/tex/latex/flashmovie') diff --git a/Master/texmf-dist/tex/latex/flashmovie/flashmovie.sty b/Master/texmf-dist/tex/latex/flashmovie/flashmovie.sty new file mode 100644 index 00000000000..b2f6f9a27c4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/flashmovie/flashmovie.sty @@ -0,0 +1,297 @@ +%%%%%%%%%%%%% flashmovie.sty +%%%%%%%%%%%%% Copyright 2009 Timo Hartmann +% +% Version 0.0 +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This package allows direct embedding of flash movies into PDF files. It is +% designed for use with pdflatex. +% +% Basically it uses the fact that the Adobe Reader 9 contains an embedded Adobe Flash +% player which can be invoked with the "rich media annotation" feature which is described +% in "Adobe Supplement to the ISO 32000 BaseVersion: 1.7 ExtensionLevel: 3". +% +% advantages: +% - You can directly embed videos into the pdf (external window is optimal and not necessary). +% - You can play back videos without worrying about platform dependencies. +% +% disadvantages: +% - You can only play back embedded videos with Adobe Reader 9 and upwards. +% +% example (1) +% - download a video file to use, for example +% http://heasarc.gsfc.nasa.gov/Videos/historical/saturn5.avi +% - transform this video into the flash format with ffmpeg: +% ffmpeg -i saturn5.avi saturn5.swf +% (or use any other program captable of this, for example mencoder) +% - put following line into your tex-file: +% \flashmovie[width=10cm,heigth=10cm]{saturn5.swf} +% (both width and height are needed!) +% - translate with pdflatex +% - advantages: +% - easy +% - does not reley on external compontents +% - disadvantages: +% - ffmpeg is incaptable of embedding h.264 into swf-files, so one can only +% use inferior video codecs (sorenson h.263 aka flv,...). +% - no controls (play,pause,stop,seek,...) possible +% +% example (2) +% - warning: The following example assumes that you have obainted VideoPlayer.swf +% and SkinOverPlaySeekStop.swf from Acrobat 9 Pro and put it into the working +% directory. +% - download a video file to use, for example +% http://heasarc.gsfc.nasa.gov/Videos/historical/saturn5.avi +% - transform this video into the mp4 format with ffmpeg: +% ffmpeg -i saturn5.avi -vcodec libx264 -vpre hq -crf 22 -acodec libfaac -ab 128k -ac 2 saturn5.mp4 +% (or use any other program captable of this, for example mencoder) +% - alternatively the flv-format with video-codec sorenson h.263 (aka flv) and audio-codec mp3 is also possible: +% mencoder saturn5.avi -o saturn5.flv -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=300:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -ofps 24 -vf harddup -oac mp3lame -lameopts abr:br=56 ) +% (or use ffmpeg to do the same thing...) +% - put following line into your tex-file: +% \flashmoviex[width=10cm,heigth=10cm]{saturn5.mp4} +% (both width and height are needed! instead of saturn5.mp4 one can also use saturn5.flv but not saturn5.swf) +% - translate with pdflatex +% - advantages: +% - controls (play,pause,stop,seek,...) possible +% - superior video codec possible (h.264) +% - one can directly embed mp4 and flv files without conversion +% - disadvantages: +% - use of external non-free components. +% +% todo: +% - replace VideoPlayer.swf and SkinOverPlaySeekStop.swf by some freely available software. +% it should be possible to program a simple video player with flexsdk and activescript. +% the videoplayer should play mp4 and flv files and should and be captable of play,pause,seek,stop. +% controls should be hidable. +% - make more options of richmedia annotations usable, for example activation by clicking, playcount,... +% - display a picture when the player is deactivated. +% - efficient multiple inclusion of video files. +% +% warning: +% - Because the file names of the movies are directly embedded into the PDFs please use only +% "normal" file names. More specific use only names compatible with internal PDF strings. +% There is even a specification what conforming file names are (see the PDF reference). + +\RequirePackage{keyval} + +\def\flashmovieparamsclear{ + \def\flashmoviewidth {4cm} + \def\flashmovieheight{4cm} +} + +\define@key{flashmovieparams}{width} {\def\flashmoviewidth {#1}} +\define@key{flashmovieparams}{heigth} {\def\flashmovieheight {#1}} + +\def\flashmovieembedfile#1{ + \immediate + \pdfobj stream + attr { /Type/EmbeddedFile } + file {#1} + \immediate + \pdfobj { << + /Type /Filespec + /F (#1) + /UF (#1) + /EF << /F \the\pdflastobj\space 0 R >> + >>} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\flashmovie{\@ifnextchar[\@flashmovie{\@flashmovie[]}} + +\def\@flashmovie[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{ + \newcount\filespecnum + \newcount\configurationnum + \newcount\contentnum + \newcount\settingsnum + + \flashmovieembedfile{#2} + \filespecnum=\pdflastobj + + \immediate + \pdfobj + {<< + /Instances + [<< + /Asset \the\filespecnum\space 0 R + /Params << /Binding /Foreground >> + >>] + /Subtype /Flash + >>} + \configurationnum=\pdflastobj + + \immediate + \pdfobj + {<< + /Assets << /Names [(#2) \the\filespecnum\space 0 R] >> + /Configurations [\the\configurationnum\space 0 R] + >>} + \contentnum=\pdflastobj + + \immediate + \pdfobj + {<< + /Activation + << /Type /RichMediaActivation + /Condition /PO + /Configuration \the\configurationnum\space 0 R + /Animation + << /Subtype /Linear + /Speed 1 + /Playcount 1 + >> + /Presentation + << /PassContextClick false + /Style /Embedded + /Toolbar false + /NavigationPane false + /Transparent true + /Window + << /Type /RichMediaWindow + /Width << /Default 100 /Min 100 /Max 100 >> + /Height << /Default 100 /Min 100 /Max 100 >> + /Position + << /Type /RichMediaPosition + /HAlign /Near + /VAlign /Near + /HOffset 0 + /VOffset 0 + >> + >> + >> + >> + /Deactivation + << /Type /RichMediaDeactivation + /Condition /XD + >> + >>} + \settingsnum=\pdflastobj + + \newlength{\xxwidth} + \newlength{\xxheight} + \newsavebox{\xxcontent} + + \sbox{\xxcontent} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}} + + \settowidth {\xxwidth} {\usebox{\xxcontent}}% + \settoheight{\xxheight}{\usebox{\xxcontent}}% + \usebox{\xxcontent}% + + \pdfannot width \xxwidth height \xxheight depth 0pt {% + /Subtype /RichMedia + /RichMediaContent \the\contentnum\space 0 R + /RichMediaSettings \the\settingsnum\space 0 R +}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\flashmoviex{\@ifnextchar[\@flashmoviex{\@flashmoviex[]}} + +\def\@flashmoviex[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{ + \newcount\filespecnum + \newcount\filespecnumi + \newcount\filespecnumii + \newcount\configurationnum + \newcount\contentnum + \newcount\settingsnum + + \flashmovieembedfile{#2} + \filespecnum=\pdflastobj + + \flashmovieembedfile{SkinOverPlaySeekStop.swf} + \filespecnumi=\pdflastobj + + \flashmovieembedfile{VideoPlayer.swf} + \filespecnumii=\pdflastobj + + \immediate + \pdfobj + {<< + /Instances + [<< + /Asset \the\filespecnumii\space 0 R + /Params + << + /Binding /Foreground + /FlashVars (source=#2&skin=SkinOverPlaySeekStop.swf&skinAutoHide=true&skinBackgroundColor=0x00FF00&skinBackgroundAlpha=0.33&volume=1.00) + >> + >>] + /Subtype /Flash + >>} + \configurationnum=\pdflastobj + + \immediate + \pdfobj + {<< + /Assets << /Names [(#2) \the\filespecnum\space 0 R (skinover.swf) \the\filespecnumi\space 0 R (VideoPlayer.swf) \the\filespecnumii\space 0 R] >> + /Configurations [\the\configurationnum\space 0 R] + >>} + \contentnum=\pdflastobj + + \immediate + \pdfobj + {<< + /Activation + << /Type /RichMediaActivation + /Condition /PO + /Configuration \the\configurationnum\space 0 R + /Animation + << /Subtype /Linear + /Speed 1 + /Playcount 1 + >> + /Presentation + << /PassContextClick false + /Style /Embedded + /Toolbar false + /NavigationPane false + /Transparent true + /Window + << /Type /RichMediaWindow + /Width << /Default 100 /Min 100 /Max 100 >> + /Height << /Default 100 /Min 100 /Max 100 >> + /Position + << /Type /RichMediaPosition + /HAlign /Near + /VAlign /Near + /HOffset 0 + /VOffset 0 + >> + >> + >> + >> + /Deactivation + << /Type /RichMediaDeactivation + /Condition /XD + >> + >>} + \settingsnum=\pdflastobj + + \newlength{\xxwidth} + \newlength{\xxheight} + \newsavebox{\xxcontent} + + \sbox{\xxcontent} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}} + + \settowidth {\xxwidth} {\usebox{\xxcontent}}% + \settoheight{\xxheight}{\usebox{\xxcontent}}% + \usebox{\xxcontent}% + + \pdfannot width \xxwidth height \xxheight depth 0pt {% + /Subtype /RichMedia + /RichMediaContent \the\contentnum\space 0 R + /RichMediaSettings \the\settingsnum\space 0 R +}}} -- cgit v1.2.3