![适用于 Windows 的多媒体包的 PDF 阅读器](https://linux22.com/image/479171/%E9%80%82%E7%94%A8%E4%BA%8E%20Windows%20%E7%9A%84%E5%A4%9A%E5%AA%92%E4%BD%93%E5%8C%85%E7%9A%84%20PDF%20%E9%98%85%E8%AF%BB%E5%99%A8.png)
我可以使用 或 来将视频嵌入到 Beamer 中。\movie
在第 一种情况下,视频可以在 Okular (Linux) 中正确显示。在第二种情况下,我使用 Adobe Reader (Windows)。但是,使用更好:pdf 编译得更快,体积更小,并且在演示过程中视频加载速度更快。 我尝试了适用于 Windows 的 Okular(来自 Microsoft Store),但视频无法显示。有没有适用于Windows 的阅读器?multimedia
\includemedia
media9
\movie
\movie
编辑
根据这个答案,如果影片是 .avi 或 .mov 格式,应该可以\movie
在 Windows 上与 Adobe 一起使用。我试过 .avi,但不起作用。视频仍然需要时间加载,pdf 仍然很大,视频甚至无法播放(我得到了典型的插件错误图标,说 Adobe 无法读取源代码)。仍在寻找适用于 Windows 的 Adobe 替代品……
答案1
要使用软件包和 Acrobat Reader 播放现代 MP4/H.264 格式的大型视频文件media9
,应使用 Web 服务器方法。即使是 275 MB 的视频文件也会在后台加载时立即开始播放。使用此方法,视频文件不会嵌入 PDF 中。
本地视频文件也可以由本地运行的轻量级 Web 服务器(如 Nginx)提供。请参阅https://tex.stackexchange.com/a/73039了解使用说明。
编辑:
命令
\mediaopts{<media label>}{[autoplay] [, autopause] [, autorewind]}
% autoplay -> play / resume on page-open
% autopause -> pause on page-close
% autorewind -> seek to start on page-close
已添加。它允许在页面打开和页面关闭事件期间控制媒体行为。暂停的媒体将继续在后台加载。
这是一个大型视频示例,使用了来自 Blender.org 的“Big Buck Bunny”示例:
\documentclass{beamer}
\usepackage{fontawesome5}
\usepackage{media9}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \mediaopts{<media label>}{[autoplay] [, autopause] [, autorewind]}
%
% autoplay -> play / resume on page-open
% autopause -> pause on page-close
% autorewind -> seek to start on page-close
%
% Place command directly after \includemedia[...]{...}{...}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ExplSyntaxOn
\NewDocumentCommand\mediaopts{mm}{
\group_begin:
\leavevmode
%reset actions
\tl_clear:N\l_mix_openact_tl \tl_clear:N\l_mix_closeact_tl
%process list of actions
\tl_if_exist:cTF{ann@#1}{
\str_if_eq:eeF{\tl_use:c{ann@#1}}{draft}{
\clist_map_inline:nn{#2}{
\str_case:nn{##1}{
{autoplay}{
\mix_pdfobj:nnn{}{dict}{
/S/RichMediaExecute /TA~\tl_use:c{ann@#1} /TI~\tl_use:c{main@#1}
/CMD~<</C~(play)>>
}
\tl_set:Nx\l_mix_openact_tl{\mix_pdflastobj:}
}
{autopause}{
\mix_pdfobj:nnn{}{dict}{
/S/RichMediaExecute /TA~\tl_use:c{ann@#1} /TI~\tl_use:c{main@#1}
/CMD~<</C~(pause)>>
}
\tl_put_right:Nx\l_mix_closeact_tl{\mix_pdflastobj:}
}
{autorewind}{
\mix_pdfobj:nnn{}{dict}{
/S/RichMediaExecute /TA~\tl_use:c{ann@#1} /TI~\tl_use:c{main@#1}
/CMD~<</C~(rewind)>>
}
\tl_put_right:Nx\l_mix_closeact_tl{\mix_pdflastobj:}
}
}
}
%insert widget annotation
\mix_pdfannot:nnnn{3bp}{3bp}{0pt}{
/Subtype/Widget /T~(mbtn@\int_use:N\g_mix_mbtncnt_int) /FT/Btn/Ff~65537
/AA~<<
/PO~<<
/S/JavaScript/JS~(
if(typeof(annotRM)=='undefined'){annotRM=new~Array();}
if(typeof(annotRM['#1'])=='undefined'){
annotRM['#1']=this.getAnnotRichMedia(\tl_use:c{page@#1},'#1');
}
annotRM['#1'].activated=true;
)
\tl_if_empty:NF\l_mix_openact_tl{/Next~\l_mix_openact_tl}
>>
\tl_if_empty:NF\l_mix_closeact_tl{
/PC~<</S/Named /N/NOP/Next~[\l_mix_closeact_tl]>>
}
>>
}
\mix_appendtofields:n{\mix_pdflastann:}
\int_gincr:N\g_mix_mbtncnt_int
}
}{
\msg_warning:nnx{media9}{undefined~reference}{#1}
\cs_if_exist:NF\g_mix_refundefwarned_tl{
\tl_new:N\g_mix_refundefwarned_tl
\AtEndDocument{\msg_warning:nn{media9}{undefined~references}}
}
}
\group_end:
}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{frame}{Start}
\end{frame}
\begin{frame}{Remote video}
\noindent\includemedia[
label=bunny,
width=\linewidth,height=0.5625\linewidth, % 16:9
activate=pageopen,
deactivate=onclick, % keep FlashPlayer activated
passcontext,
flashvars={
% source=http://localhost/bbb_sunflower_1080p_30fps_normal.mp4
source=http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4
&autoPlay=true
}
]{}{VPlayer.swf}%
\mediaopts{bunny}{autoplay,autopause}
\mediabutton[mediacommand=bunny:pause, mediacommand=bunny:rewind]{\faStop}\quad
\mediabutton[mediacommand=bunny:playPause]{\faPlay / \faPause}
\end{frame}
\begin{frame}{End}
\end{frame}
\end{document}