如何将 MP3 文件放置在 PDF 页面中,以便它可以在装有 Adobe Acrobat Reader 的 Windows 机器上播放音频?
更新:2020 年 8 月 31 日
以下答案在 2020 年不再有效。我尝试了此代码:
\starttext
\setupinteraction[state=start]
\externalfigure[sample.mp3]
\stoptext
我将 mp3(sample.mp3)放在与 tex 文件相同的文件夹中。我进行了编译。没有出现任何错误。
当我查看它时,我看到一个灰色方块,上面写着:
name: sample.mp3
file: sample.mp3
state: unknown
我在 Adobe Acrobat Reader DC 和 Microsoft Edge 中都尝试过,结果都是相同的灰色方块。
然后我尝试更改代码以不包含文件扩展名,只是\externalfigure[sample
打印此消息三次:
参见 samples.tex
我搜索了整个 ConTeXt 安装目录,找不到任何具有此名称的文件可以引用,ConTeXt Garden 中也没有提及它,我在邮件列表中也找不到任何内容。
更新:2020 年 9 月 2 日
我发现不支持 .mp3。正在查找这里,我发现 mov 是受支持的,但它显示“注意:电影包含功能仅在 Adobe Acrobat 中有效,在 Linux 上无效”。请注意,我在 Linux 中编译,但在 Windows 工作计算机上查看以在 Adobe 中测试。这可能是原因吗,或者文件应该在 Linux 中编译正常并且仍然可以在 Adobe 中查看?编译后,生成的文件只是空的,也是 5 kb,而视频是 700 kb,所以很明显 mov 没有放在 PDF 中。
\starttext
\setupinteraction[state=start]
\enabletrackers[graphics.locating]
\externalfigure[sample.mov][width=10cm, height=10cm]
\stoptext
这至少会在 Adobe 中创建一个不可见的 10 厘米 x 10 厘米可点击框,因为当鼠标放在文档的左中间时,它会从光标变成手,但不会播放或听到任何内容。
更新:2020 年 9 月 2 日,更新 2
我尝试将 MOV 转换为 pdf,然后嵌入 PDF,但转换后创建的 PDF 在每张幻灯片上都有一张图片,而不是将视频放在可以嵌入到 ConTeXt 创建的 PDF 中的 PDF 中。
答案1
以下示例定义了\embedaudio
。它实现了与 LaTeX 包相同的嵌入式媒体规范。MP3 格式的音频文件在随附的media9
播放器组件中播放。在嵌入之前,会先下载指定为 URL 的 MP3 文件。播放需要 Windows 或 OSX 平台上的 Adobe Reader。APlayer.swf
media9
请参阅 media9 手册,表4和表 5了解如何通过 FlashVars 配置 APlayer 以及如何使用键盘控制播放。FlashVars 作为 的第一个参数传递\embedaudio
。
给出了使用 ConTeXt 嵌入视频的类似命令这里。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \embedaudio{<flashvars>}{<audio file | URL (MP3)>}{link text}
% flashvars documented in `texdoc media9`, page 20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\protected\def\pdfobj{\pdfextension obj }
\def\pdflastobj{\numexpr\pdffeedback lastobj\relax}
\protected\def\pdfstartlink{\pdfextension startlink }
\protected\def\pdfendlink{\pdfextension endlink\relax}
\let\pdfxform\saveboxresource
\let\pdflastxform\lastsavedboxresourceindex
\define[3]\embedaudio{%
\ifdefined\aplayer\else%
\immediate\pdfobj stream file {APlayer.swf}%
\immediate\pdfobj{<<
/Type/Filespec/F (APlayer.swf)/UF (APlayer.swf)
/EF <</F \the\pdflastobj\space 0 R>>
>>}%
\edef\aplayer{\the\pdflastobj}%
\fi%
%
\immediate\pdfobj stream file {#2}%
\immediate\pdfobj{<<
/Type/Filespec/F (#2)/UF (#2)
/EF <</F \the\pdflastobj\space 0 R>>
>>}%
\edef\audio{(#2) \the\pdflastobj\space 0 R}%
%
\immediate\pdfobj{<<
/Type/RichMediaInstance/Subtype/Sound
/Asset \aplayer\space 0 R
/Params <</Binding/Foreground/FlashVars (autoPlay=true&source=#2)>>
>>}%
%
\immediate\pdfobj{<<
/Type/RichMediaConfiguration/Subtype/Sound
/Instances [\the\pdflastobj\space 0 R]
>>}%
%
\immediate\pdfobj{<<
/Type/RichMediaContent
/Assets <<
/Names [(APlayer.swf) \aplayer\space 0 R \audio]
>>
/Configurations [\the\pdflastobj\space 0 R]
>>}%
\edef\rmcontent{\the\pdflastobj}%
%
\setbox0=\hbox{ }\immediate\pdfxform 0%
\pdfstartlink user{
/Subtype/RichMedia
/BS <</W 0/S/S>>
/Contents (audio file:#2)
/NM (rma:#2)
/AP <</N \the\pdflastxform\space 0 R>>
/RichMediaSettings <<
/Activation <<
/Condition/XA
/Presentation <<
/Transparent true
/Style/Embedded
/PassContextClick false
>>
>>
/Deactivation <</Condition/PC>>
>>
/RichMediaContent \rmcontent\space 0 R
}#3\pdfendlink%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\starttext
\ConTeXt{} embedded audio example: \embedaudio{}{click.mp3}{\strut $\rightarrow$Click and listen!}
\ConTeXt{} audio-URL example: \embedaudio{}{http://www.openbsd.org/songs/song49.mp3}{\strut $\rightarrow$Click and listen!}
\stoptext