在上传到远程网站期间缩小/调整视频大小

2024-03-30

我有一个用 Ruby on Rails 编写的 Web 应用程序,它使用表单将视频从用户上传到服务器(我实际上使用直接上传到 s3 的 jquery 上传器,但我认为这不相关)。
为了减少视频的上传时间,我想缩小它的大小,例如如果视频大小为 1000x2000 像素,我想将其缩小到 500x1000。有没有办法在客户端上传视频时这样做?有没有一个 javascript 库可以做到这一点?


重新压缩视频是一个不小的问题,不会很快在浏览器中发生。

随着HTML5的改变,理论上如果你能克服几个问题,就有可能:

  • 你会用File API https://developer.mozilla.org/en/Using_files_from_web_applications读取用户使用选择的文件的内容<input type="file">元素。然而,它看起来像FileReader https://developer.mozilla.org/en/DOM/FileReader读到整个文件存入内存在将其交给您的代码之前,这正是您在处理大型视频文件时所不希望看到的。不幸的是,这是一个你无能为力的问题。它可能仍然有效,但对于超过 10-20 MB 左右的任何内容,性能可能会不可接受。
  • 获得文件数据后,您实际上必须解释it – 通常通过以下方式完成的事情demuxer http://en.wikipedia.org/wiki/Multiplexer将容器(mpeg 等)文件拆分为视频和音频流,以及codec http://en.wikipedia.org/wiki/Codec将这些流解压缩为原始图像/音频数据。您的操作系统附带了多种编解码器的实现,但其中没有一个可以通过 JavaScript 访问。还有一些JSvideo https://github.com/bemasc/Broadway and https://github.com/mbebenita/Broadway audio https://github.com/nddrylliog/jsmad codec https://github.com/ofmlabs/alac.js实现,但它们是实验性的并且极其缓慢;并且只执行减压器,因此在创建输出时您会陷入困境。
  • 解压缩、缩放和重新压缩音频和视频极其处理器密集型,这正是 JavaScript(以及一般的脚本语言)最不擅长的工作负载。至少,你必须使用网络工作者 https://developer.mozilla.org/En/Using_web_workers在单独的线程上运行代码。
  • 所有这些工作都已完成several http://ffmpeg.org/ times http://www.videolan.org/ over http://www.videohelp.com/tools/sections/video-encoders;你正在重新发明轮子。

实际上,这是必须在服务器端完成的事情,即使如此,这也不是一项微不足道的工作。

如果你绝望了,你可以尝试像插件/ActiveX 控件之类的东西来处理压缩,但是你必须说服用户安装插件(恶心)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在上传到远程网站期间缩小/调整视频大小 的相关文章

随机推荐