【问题标题】:Rendering HTML5 animation server-side?在服务器端渲染 HTML5 动画?
【发布时间】:2011-08-13 22:24:03
【问题描述】:

我们正在使用 HTML5 + Javascript 创建动画。现在,我们希望将这些动画转换为视频文件(MPEG4 或其他格式都无所谓),以便浏览器挑战的人也可以看到这些动画。动画包含音轨。

我们正在寻找可以在服务器端呈现和记录 HTML 页面的解决方案。我知道已经存在用于呈现网页缩略图等静态图像的工具。但是,在我们的用例中,我们应该输出一个视频文件。

有哪些选择?无头 X 服务器 + Firefox 是否可行?我们最好在云(Amazon EC2)中运行它。

此外,如果我们在以非实时速度播放动画时需要考虑一些特别的事情,我想听听 - 例如将 HTML5 音频与动画同步。

【问题讨论】:

  • Hii Mikko,我有一个网络应用程序,用户可以在其中创建动画,我想在服务器端将这些动画渲染为视频,你能提供你的回购或任何解决我的问题的方法吗?到目前为止我一直在苦苦挣扎,谢谢

标签: firefox html video audio screenshot


【解决方案1】:

听起来很有趣。我对需要运行无头 X 服务器的 QtWebKit 库做了类似的事情。我正在做的是将网页大规模转换为 PDF。搜索一些 webkit2pdf 工具以查看可以构建的示例可能是有意义的。

我会看一下库并将其与另一个录制解决方案结合起来。

【讨论】:

    【解决方案2】:

    根据您的动画,可能有效的一件事是创建一个动画 gif。将足够多的动画静止图像串在一起,您应该能够使用正确的软件将它们变成视频。这是一个相当蛮力的解决方案,但如果你能以“逐帧”的方式推进你的动画,它可能会奏效。

    【讨论】:

      【解决方案3】:

      请注意,我们已经解决了这个问题

      • 在无头服务器上运行 Firefox。具有不错显卡的服务器。

      • 拥有一个 Selenium Python 控制脚本来启动/停止渲染

      • 一个自定义渲染循环,它将使用 Firefox 的 XPCom API 直接在编码管道中提供 <canvas> 原始像素

      • 自定义 Javascript 渲染循环,其中时钟并非来自真实时钟,而是以非实时的稳定帧速率将帧切片到渲染器

      相当复杂的系统,所以不适合一个答案框:(

      【讨论】:

      • 我很好奇您是否对此答案有任何更新,现在已经过去了很多年,所有浏览器都发生了很大变化。还在使用这个解决方案吗?
      • 是的,我设法解决了它并设法在服务器端呈现 webGL。只需逐个运行动画循环,捕获 像素内容并将其编码为原始帧或视频。
      【解决方案4】:

      在工具方面,我对这些 Ruby 工具的体验相当不错:

      我不知道他们如何处理音频

      【讨论】:

      • 您可以使用 GStreamer 将音频混入视频中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 2018-01-05
      • 2011-11-07
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多