当前位置:  开发笔记 > IOS > 正文

Rails + X-Sendfile为Ipad提供大型视频

如何解决《Rails+X-Sendfile为Ipad提供大型视频》经验,为你挑选了0个好方法。

我有一个应用程序服务大(几百MB)的视频文件,它在桌面浏览器上完美运行,在Apache上使用Rails + X-Sendfile.一个重要的要求是这些视频必须是私有的,并且只对已登录的用户可见,因此这就是我使用Rails为其提供服务的原因.

一切都与其他设备完美配合.我以这种方式提供视频:

response.headers["X-Sendfile"]=  filename
send_file filename, :disposition => :inline, :stream => true, :x_sendfile => true

但是Ipad的请求需要字节范围头.解决方案(不能完美运行)是这样的:

size = File.size(filename)
bytes = Rack::Utils.byte_ranges(request.headers, size)[0]
offset = bytes.begin
length = bytes.end  - bytes.begin

response.header["Accept-Ranges"]=  "bytes"
response.header["Content-Range"] = "bytes #{bytes.begin}-#{bytes.end}/#{size}"

send_data IO.binread(filename,length, offset), :type => "video/mp4", :stream => true, :disposition => 'inline', :file_name => filename 

有了这个解决方案,我遇到了大于50mb视频的问题,而且更重要的是,我给了rails一个不应该有的责任.通过x-sendfile模块处理流的繁重负载应该是apache.但我不知道如何.该send_data方法没有x-sendfile参数,涉及send_file方法的解决方案不起作用.

我发现这两个问题与我的相似,但它们不起作用:rails media file stream通过send_data或send_file方法接受字节范围请求,通过rails向Ipad提供mp4文件的正确方法是什么?

关于发生了什么的任何线索?我几周以来一直在努力,我需要让它发挥作用.欢迎其他可行的解决方案.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有