我的免费物理书(pdf 格式)包含许多 QuickTime 影片。这本书是用 LaTeX 编写的。Acrobat Reader 似乎不再支持播放 QuickTime 影片。我该怎么办?
(要了解该项目和免费文件,共 5 卷,超过 2000 页,可在以下网址下载:www.motionmountain.net。搜索“quicktime”查找 pdf 中的影片。)
我使用了旧的 movie15 包和 dvi-dvips-pdf 路径。(我没能让 media9 包工作。)更换包有帮助吗?或者这是一个更普遍的问题?任何建议都值得赞赏,因为它会直接帮助读者。
答案1
关于 TeX、视频和 PDF,这里有多个因素在起作用:
- 将视频/多媒体嵌入 PDF 有几种不同的方法。
- 还有几个 (La)TeX 包,每个包通常都遵循某种“PDF 多媒体机制”。
- PDF 查看器对多媒体的支持。
我猜你使用的是 Mac OS。我上次听说,在 Windows 上运行的两种 PDF 机制也在那里运行。这意味着您应该能够使用 movie15 或 media9。使用 media9 是更糟糕的选择,因为据我所知,它仍然将 Flash 支持文件嵌入 PDF 文件中,这在当今可以与某些兼容机制配合使用,但没有必要,因为它不会带来任何好处。所以你不可能比 movie15 (*1) 做得更好。这是第 1) 点和第 2 点。但Acrobat 将 movie15 使用的旧机制称为“旧版”,上次我尝试使用它时,必须在设置中明确启用它(在“多媒体(旧版)”下),即使这样,它也无法在我的第二台机器上运行。您可以先尝试一下。
正如您所看到的,最麻烦的部分是查看器支持。查看器通常不自行实现视频,而是使用外部库或某些系统接口。在 Windows 上,PDF 查看器倾向于使用“Windows Movie Player”来播放媒体,因此视频格式的限制是从中继承而来的。特别是.mov
无法播放 QuickTime ()。我不确定 Mac 的情况。但我注意到 MP3、AVI、MP4、MPG 和 WMV 格式在 Windows 上与 Acrobat Reader 和 Foxit Reader 兼容(两者都使用 Windows Movie Player)。根据我的经验,Foxit 的多媒体支持更好。但这暗示您可能会发现将视频格式从 QuickTime 更改为其他格式会成功。(*2)
可能与您不太相关,但也有 Linux 解决方案。我知道至少有 4 个查看器提供一些多媒体播放功能 - Okular、Evince、pdfpc 和 pympress。前两个是通用 PDF 查看器,应该可以很好地处理 movie15 样式的 PDF 多媒体,前提是您安装了正确的库:
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gst-libav
或者您的 Okular 版本可能使用了vlc
其他版本。
后两个查看器针对的是演示文稿。我对它们没有太多经验,尽管我无法让 pdfpc 处理我的文件。Pympress 更好,它也可以使用 或gstreamer
,vlc
尽管我记得设置并不简单。但它无法处理您的文件,因为它错误地解释了 movie15 放入 PDF 中的多媒体文件名/路径。
*1) 尽管如此,特别是 movie15 使得在 Evince 中播放嵌入在 PDF 文件中的视频变得有点困难,因为 movie15 将文件附件注释放在与视频相同的位置,并且 Evince 覆盖在其之上,这使视频很难点击。
编辑(2021-10-21):
*2) 就在今天,我重新测试了 Windows 上的多媒体文件类型支持。在全新安装的 Acrobat 和 Foxit 上,我可以用 Foxit 播放 AVI、MP4、MPG、WMV,而用 Acrobat 只能播放 MPG。这当然是一种倒退,因为我上面列出的格式工作自 2021 年 6 月起,Acrobat 和 Foxit 均支持。
optex
作为参考,这是我使用的测试文件(与和包一起编译pdfextra
,MIME 类型声明将成为的下一版本的一部分pdfextra
),预计video.xxx
和audio.xxx
文件可以被 TeX 找到(例如在当前目录中):
\fontfam[lm]
\load[pdfextra]
\_pdfextra_mimetype{au}{audio/basic}
\_pdfextra_mimetype{aiff}{audio/x-aiff}
\_pdfextra_mimetype{mov}{video/quicktime}
\_pdfextra_mimetype{mpg}{video/mpeg}
\_pdfextra_mimetype{wmv}{video/x-ms-wmv}
\long\def\test#1{%
\_insec{#1\strut}
\render[#1][
aactions=\renditionautoplay,
controls=true,
]{\Black\vrule width\hsize height\hsize}
\vfil\break
}
\test{video.avi}
\test{video.mov}
\test{video.mp4}
\test{video.mpg}
\test{video.wmv}
\test{audio.aiff}
\test{audio.au}
\test{audio.mp3}
\test{audio.opus}
\bye