从 Grails 控制器渲染视频内容

Ric*_*sky 5 grails amazon-s3 video-encoding mime-types

毫无疑问又是一个愚蠢的新手问题!我在 Grails 控制器中有一个字节数组,其中包含视频文件(确切地说是 *.mp4 文件)的内容。我熟悉如何从 grails 控制器渲染 JSON、XML 和其他基本类型,但我找不到任何显示如何输出视频的示例。本质上我想做以下事情:

  render bytes as MP4
Run Code Online (Sandbox Code Playgroud)

我意识到我可能需要一个诸如以下的构造:

  render(text:"<xml>some xml</xml>",contentType:"video/mpeg",encoding:"UTF-8")
Run Code Online (Sandbox Code Playgroud)

但我不清楚如何获取其中的字节数组。显然我不是渲染类似 html 内容的专家。我隐藏在库函数后面太久了!任何指向参考或示例的指针将不胜感激。

因此,如果它有助于将建议指向正确的方向,则视频中的字节来自我正在使用 jets3t 库读取的 S3 对象。

小智 1

    OutputStream out = response.getOutputStream()
    //set up byte array
    byte[] content = yourS3Object.getBytes()


    response.setContentLength(content.size())
    response.addHeader("Content-disposition", "attachment; filename=${yourS3Object.fileName}")
    response.addHeader("Content-type", "video/quicktime")
    out.write(content)
    out.close()
Run Code Online (Sandbox Code Playgroud)

这应该够了吧。

  • 随着我更深入地了解这一点,我发现如果您不想只是下载,新的基于 webkit 的现代 html5 浏览器会更加复杂。如果你想就地玩,则存在与“Accept-Ranges”和“Content-Range”标头相关的问题。我们通过查看向这些浏览器提供渐进式下载文件的其他服务器的行为来了解这一点。我们只在使用上述代码处理非常大的文件时仍然遇到问题时才查看。最重要的是,这比最初看到的要复杂,我很想在某个地方看到一篇关于此问题的综合文章。 (3认同)
  • 嗯,那篇文章在哪里?:) (3认同)