knitr mp4 电影嵌入在 Windows XP 上不起作用

Posted

技术标签:

【中文标题】knitr mp4 电影嵌入在 Windows XP 上不起作用【英文标题】:knitr mp4 movie embedding does not work on Windows XP 【发布时间】:2013-05-05 11:07:00 【问题描述】:

我用一个生成 mp4 电影的块编写了一个 Rmd 文件(到 html):

```r clock, fig.width=7, fig.height=6, fig.show='animate'
par(mar = rep(3, 4))
for (i in seq(pi/2, -4/3 * pi, length = 12)) 
    plot(0, 0, pch = 20, ann = FALSE, axes = FALSE)
    arrows(0, 0, cos(i), sin(i))
    axis(1, 0, "VI"); axis(2, 0, "IX")
    axis(3, 0, "XII"); axis(4, 0, "III"); box()

```

knitr生成以下用于嵌入 mp4 电影的 html 代码:

<p><video   controls="controls" loop="loop"><source src="figure/clock.mp4" type="video/mp4" />video of chunk clock</video></p>

mp4 电影在 figure 子文件夹中创建得很好,但是当我使用 Chrome、Firefox 或资源管理器在 Windows XP 机器上打开它时,它没有出现在 html 输出中。

这是一个(临时)示例:http://stla.overblog.com/ellipse-chart-test - 这不是“时钟”示例,但这是完全相同的渲染问题。我在 Windows Vista 机器上使用 Chrome 观看电影,但在我的 Windows XP 机器上看不到。

解释是什么?真的是操作系统问题还是浏览器版本问题?

【问题讨论】:

对于 Windows XP,我不能完全肯定地说,但我知道对于 Mac OS,浏览器使用操作系统功能来播放(某些)视频格式。这是一个许可问题:MP4(或更准确地说是 h.264)是一种受专利保护的格式。操作系统供应商通常许可这些编解码器,因此在其上运行的应用程序不必这样做。当 Windows XP 发布时,h.264 并不存在。去想...如果这回答了你的问题,我很乐意写一个更完整的答案。 @likeitlikeit 这意味着对于 XP 用户,即使使用另一个 html 代码也无法将此文件嵌入 html 中? (假设我们不修改文件) 根据您的描述以及我对在不同操作系统上播放网络媒体的了解,情况可能就是这样。 @likeitlikeit 好的。我请朋友们尝试,确实它对 XP 用户不起作用。如果你能写一个答案很好。 @StéphaneLaurent 仅供参考 -- 在 knitr 的下一个版本中,我将使用 OGG 而不是 MP4。 【参考方案1】:

tl;dr 浏览器真的使用操作系统来执行一些媒体解码任务。通过 a) 为您的受众使用最兼容的媒体格式提供替代媒体流 b) 使用插件(即 Flash)解决此问题c) ),或 d) 建议安装 MP4 插件。

这实际上是操作系统的“问题”。许多浏览器,就像特定平台上的一些其他程序一样,使用操作系统资源来完成给定的任务。在涉及受知识产权保护的程序时尤其如此。

您的编解码器(h.264 又名“MP4”)恰好是一个特别激烈的 IP 争夺。因此,浏览器不会竭尽全力对手头的 IP 进行许可,而是使用主机系统的许可编解码器。

在您的情况下,Windows XP 碰巧无法解码您视频的媒体格式,而浏览器似乎无法自行解码。

你现在的选择:

使用您的video 标签提供额外的媒体流(参见Wikipedia 示例) 尝试找出大多数用户在 XP 上使用的浏览器,然后选择本机支持的格式(webm 用于 Chrome,ogg 用于 Firefox) 只需使用 Flash 播放 MP4(与 HTML5 之前的日子一样) 告诉用户安装操作系统级插件来播放h.264;你甚至可以在后备文本中做到这一点。我不会推荐特定的产品,但有很多。

【讨论】:

非常感谢。它适用于 webm 视频和 Chrome 浏览器:stla.overblog.com/ellipse-chart-test2

以上是关于knitr mp4 电影嵌入在 Windows XP 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何将 mp4 电影嵌入到我的 html 中?

怎样可以让Windows Media Player可以播放MP4格式电影

Windows Media Foundation 使用 IMFTransform 将 mp4 电影帧解码为 2D 纹理

JavaCV开发详解之27补充篇1:摄像头画面录制成多个mp4视频分片文件,支持树莓派嵌入式安卓linux和windows等平台摄像头画面录制视频分片文件

JavaCV开发详解之27补充篇1:摄像头画面录制成多个mp4视频分片文件,支持树莓派嵌入式安卓linux和windows等平台摄像头画面录制视频分片文件

无法使 MP4 电影高度更改并适合横向和纵向的 Material Box