如何在上传服务器之前以 Angular 压缩视频?

时间:2021-02-28 03:59:41

标签: javascript angular typescript spring-boot html5-video

我有一个 Angular 应用程序,它通过 Spring Boot Server 将视频上传到 S3 存储桶。但是,我需要减小视频的大小,因为我需要从移动设备上传 30MB 的视频。

  • 有没有办法在将视频上传到我的服务器之前降低视频质量?

  • 或者您是否推荐其他一些可以减少等待时间的策略?了解视频最终将托管在 S3 存储桶中,也许在我的 Spring Boot 服务器上执行压缩?

此时,我想澄清一下,当将视频从我的 Angular 应用程序发送到 Spring Boot 服务器时,它是否会通过使用 Angular 的 HTTPClient 的 POST 请求作为“MultipartFile”到达。

认为在 Spring Boot 服务器上压缩视频的策略可以减少视频的加载时间是否有意义,因为视频是从 Spring Boot 加载到 S3 的?。

有经验的可以帮我解释一下吗?

3 个答案:

答案 0 :(得分:1)

<块引用>

有没有办法在上传前降低视频质量 到我的服务器?

请注意,压缩视频是一项繁重且耗时的操作,需要使用客户端编程语言 (javascript) 通过网络浏览器完成。您可能会发现 videoconverter.js 之类的 javascript 库似乎无法正常工作。但是,在发送到服务器之前通过 Web 浏览器对 图像 执行的相同操作是有意义的,您可以为它找到工作库。

<块引用>

或者您是否推荐其他一些可以减少 等待的时间?了解视频终于要开始了 托管在 S3 存储桶中,可能对我的 Spring Boot 服务器?

即使在服务器端,也不建议执行如此繁重的操作。一种可能的客户端解决方案是修剪按秒排序的视频文件以制作嵌套视频文件,然后将它们发送到服务器。之后,您可以部分使用它们或连接起来再次制作单个视频文件。

<块引用>

认为压缩视频的策略有意义吗? 在 Spring Boot 服务器上可以减少视频的加载时间, 因为从 Spring Boot 视频被加载到 S3?。

这取决于您如何执行操作。按需压缩不是一个好的选择。使用后台工作进程在服务前生成新文件的压缩是一个不错的选择。

答案 1 :(得分:0)

我会尽我最大的知识和能力来回答。这是我所知道的。

<块引用>

有没有办法在将视频上传到我的服务器之前降低视频质量?

是的。但是我建议不要在客户端进行,原因如下:

缺点

  • 不得信任用户输入通过在客户端进行压缩,无论如何您都必须在服务器端进行一些完整性检查
  • 视频压缩(或优化)涉及复杂的操作,JavaScript 的选择比其他语言少
  • 由于操作复杂,您给客户施加了压力,使其更重。如果您不控制他们的配置(硬件、浏览器和版本),您几乎只能在 Intranet 中遇到这种情况,您可能会降低(或失败)某些用户的浏览体验
  • 出于所有这些原因,客户端错误更难跟踪和修复,而且与向服务器添加资源相比,您的开发成本很快就会增加

优点

  • 您从服务器上卸载了一些计算
  • 您帮助拥有小带宽但功能强大的计算机和最新浏览器的人上传大型视频

视频压缩工具

我的建议

  • 如果你需要节省你的服务器,你可以在一天中的某个时间,当你的服务器负载不是很重的时候,异步地批量进行视频压缩

  • 如果您有大量输入,将优化发送到另一台服务器可能会更便宜(即:Amazon、DigitalOcean、Linode 等的按需虚拟机,因此您只需在你需要)而不是升级你的“主”服务器

  • 另请查看此 too 以了解最佳做法

答案 2 :(得分:-1)

我的理解是大多数视频文件已经被编解码器压缩了。但是,如果您需要额外的压缩,您可以在 Spring Boot 服务器上设置 GZIP 或 Brotli 之类的内容(我认为这种类型的压缩在 Angular 中甚至是不可能的)。