毫无疑问,另一个愚蠢的新问题!我在Grails控制器中有一个字节数组,其中包含视频文件的内容(确切地说是一个* .mp4文件)。我熟悉如何从grails控制器渲染JSON,XML和其他基本类型,但我找不到任何显示如何输出视频的示例。本质上我想做以下事情:
render bytes as MP4
我意识到我可能需要一个构造如:
render(text:"<xml>some xml</xml>",contentType:"video/mpeg",encoding:"UTF-8")
但是我不清楚我是如何获得字节数组的。显然我不是渲染类似HTML的内容的专家。我一直躲在库函数后面太久了!任何指向参考或示例的指针都将非常感激。
因此,如果它有助于将建议指向正确的方向,那么带有视频的字节来自我正在使用jets3t库读取的S3对象。
答案 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