从Grails控制器渲染视频内容

时间:2011-11-26 14:45:58

标签: grails amazon-s3 mime-types video-encoding

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

  render bytes as MP4

我意识到我可能需要一个构造如:

  render(text:"<xml>some xml</xml>",contentType:"video/mpeg",encoding:"UTF-8")

但是我不清楚我是如何获得字节数组的。显然我不是渲染类似HTML的内容的专家。我一直躲在库函数后面太久了!任何指向参考或示例的指针都将非常感激。

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

2 个答案:

答案 0 :(得分: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()

这应该可以解决问题。

答案 1 :(得分:1)

虽然从控制器提供视频肯定是可能的,但如果您的目标只是在浏览器中显示QuickTime视频,则可能会有一个更简单的解决方案。在这种情况下,您可能希望尝试使用以下命令提供的 FlashPlayer 插件:

grails install-plugin flash-player

安装此播放器后,您只需将以下几行插入视图GSP:

即可
<div id="test">
  <p>You need Flash Player installed  to play this media.</p>
</div>
<g:flashPlayer id="test" varFile="${createLinkTo(dir: 'movies', file: 'my.mov')}"/>

让插件与Grails V2一起工作需要花一些时间,但现在它已经到位,我意识到插件帮助我避免了多少工作。如果您想了解更多信息,请访问http://grails.org/FlashPlayer+Plugin