如何为仅API的应用程序创建视频预览

时间:2019-06-05 22:31:39

标签: ruby-on-rails rails-api rails-activestorage video-thumbnails

我有一个仅API的应用程序,可使用'fast_jsonapi'GEM呈现JSON响应。

我设法使用ActiveStorage上传视频,并且可以在JSON响应上发送视频URL。但是我需要在相同的响应上发送一个Thumbnail URL。

我查看了Rails文档和Google,发现有一些方法可以在Rails应用程序中完成

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

但是我找不到如何将其包含在仅API的应用程序中并在JSON响应上发送Thumbnail URL的方法。

现在,这是我的序列化程序,我正在其中尝试在Blog上找到的解决方案,但到目前为止,该解决方案无法正常工作。我不确定这是正确的方法还是不确定该如何解决。

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

如果有人感兴趣,我会设法找到解决方案

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。