Как создать предварительный просмотр видео только для приложения API - PullRequest
0 голосов
/ 06 июня 2019

У меня есть приложение только для API, которое отображает ответы JSON с GEM 'fast_jsonapi'.

Мне удалось загрузить видео с помощью ActiveStorage, и я могу отправить URL-адрес видео в ответе JSON. Но мне нужно отправить миниатюрный URL в том же ответе.

Я проверил документацию по Rails и Google и обнаружил, что есть способы сделать это в приложении Rails

<ul>
  <% @message.files.each do |file| %>
    <li>
      <%= image_tag file.preview(resize_to_limit: [100, 100]) %>
    </li>
  <% end %>
</ul>

Но я не смог найти, как включить это в приложение только для API и отправить URL-адрес миниатюр в ответе JSON.

Сейчас это мой сериализатор, где я пытался найти решение, найденное в блоге, но пока оно не работает. Я не уверен, что это правильный подход или как я могу решить эту проблему.

class EjercicioSerializer
  include FastJsonapi::ObjectSerializer
  #include ActionView::AssetPaths
  include ActionView::Helpers::AssetTagHelper

  set_id :id
  attributes :nombre, :descripcion

  attribute :video_url do |object|
    Rails.application.routes.url_helpers.rails_blob_path(object.video, only_path: true) if object.video.attachment
  end

  attribute :video_thumbnail do |object|

    link_to(image_tag(object.video.preview(resize: "200x200>")),  
      Rails.application.routes.url_helpers.rails_blob_path(object.video, disposition: "attachment"))  

  end

end

1 Ответ

0 голосов
/ 06 июня 2019

Если кому-то интересно, мне удается получить Решение

attribute :video_thumbnail do |object|
    Rails.application.routes.url_helpers.rails_representation_url(object.video.preview(resize: "200x200").processed, only_path: true)

end

А на сервере должны быть установлены FFmpeg и ImageMagick.

...