我有一个用Ruby编写的web应用程序,它使用一个表单将视频从用户上传到服务器(我实际上使用的是直接上传到s3的jquery上传程序,但我认为这不相关)。
为了减少视频的上传时间,我想缩小它的大小,例如如果视频大小是1000x2000像素,我想将其缩小到500x1000。在客户端上传视频时,有没有办法这样做?有没有一个javascript库可以做到这一点?
答案 0 :(得分:2)
重新压缩视频是一个非常重要的问题,不会很快在浏览器中发生。
对于HTML5中的更改,如果您可以克服多个问题,理论上可能:
<input type="file">
元素选择的文件的内容。但是,看起来FileReader
将整个文件读入内存,然后再将其移交给您的代码,这正是您在处理大型视频文件时不想要的。不幸的是,这是一个你无能为力的问题。它可能仍然有效,但对于超过10-20 MB的任何东西,性能可能都是不可接受的。实际上,这是必须在服务器端完成的事情,即便如此,这也不是一项微不足道的努力。
如果你是绝望的,你可以尝试像处理压缩的插件/ ActiveX控件,但是你必须说服用户安装插件(yuck)。
答案 1 :(得分:1)
您可以使用像Carrierwave这样的宝石(https://github.com/jnicklas/carrierwave)。它具有在存储文件之前处理文件的能力。即使您首先使用javascript将它们直接上传到S3,您也可以让Carrierwave检索文件,处理它并再次存储它。
否则你可能只是让Carrierwave从头开始处理该文件(除非您使用Heroku进行托管,并且需要通过直接转到S3来避免超时)。