Streaming使用ActionController :: Live在S3上下载文件

时间:2017-02-05 09:00:15

标签: ruby-on-rails amazon-s3

我现在正在创建需要从S3播放视频并使用html5视频显示的网络服务。

作为业务逻辑,它不能允许直接访问,因为我不希望用户知道视频数据来自何处并访问它。这意味着我不想使用redirect_to。为了达到这个目的,我想如果Rails使用206 partial content的任何流媒体逻辑拦截视频数据流。总而言之,模仿直接访问S3。

然而,我实际上还没有做过这种事情,所以我想知道一些有用的,信息丰富的资料或技术,你们已经尝试或知道。

目前,我正在尝试实现类似下面的内容,但仍然感觉很好。需要一些建议。

class VideoController < ApplicationController
  include ActionContoller::Live

  ...

  def source
    s3 = Aws::S3::Client.new
    s3.get_object(bucket "mybucket", key: "myvideo") do |chunk|
      response.stream.write chunk
      sleep 1
    end
  ensure
    response.stream.close
  end

  ...
end

0 个答案:

没有答案