Визуализация видеоконтента с контроллера Grails


Без сомнения, еще один глупый вопрос ньюба! У меня есть массив байтов в контроллере Grails, который содержит содержимое видеофайла (файл*. mp4, если быть точным). Я знаком с тем, как визуализировать JSON, XML и другие основные типы из контроллера grails, но я не могу найти примеров, показывающих, как выводить видео. В сущности, я хочу сделать следующее:

  render bytes as MP4

Я понимаю, что мне, вероятно, нужна такая конструкция, как:

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

Но я не совсем понимаю, как я получаю массив байтов в там.Очевидно, что я не эксперт по рендерингу html-подобного контента. Я слишком долго прятался за библиотечными функциями! Любые указатели на ссылку или пример будут очень признательны.

Таким образом, если это помогает направить совет в правильном направлении, байты с видео поступают из объекта S3, который я читаю с помощью библиотеки jets3t.

2 4

2 ответа:

    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()

Это должно сработать.

Хотя, конечно, можно подавать видео с контроллера, может быть гораздо более простое решение, если ваша цель состоит только в том, чтобы представить видео QuickTime из браузера. В этом случае вы можете вместо этого попробовать плагин FlashPlayer, доступный с командой:

grails install-plugin flash-player

Как только вы установите этот плеер, вы можете просто вставить следующие строки в ваш view 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 + плагин