【问题标题】:How To Compress Video in Angular Before Upload Server?如何在上传服务器之前在 Angular 中压缩视频?
【发布时间】:2021-05-30 00:09:46
【问题描述】:
我有一个 Angular 应用程序,它通过 Spring Boot Server 将视频上传到 S3 存储桶。但是,我需要减小视频的大小,因为我需要从移动设备上传 30MB 的视频。
此时,我想澄清一下,在将视频从我的 Angular 应用程序发送到 Spring Boot 服务器时,它是否会通过使用 Angular 的 HTTPClient 的 POST 请求作为“MultipartFile”到达。
认为在 Spring Boot 服务器上压缩视频的策略可以减少视频的加载时间是否有意义,因为从 Spring Boot 将视频加载到 S3?。
有经验的人可以帮我解释一下吗?
【问题讨论】:
标签:
javascript
angular
typescript
spring-boot
html5-video
【解决方案1】:
我会尽我的知识和能力尽力回答。这是我所知道的。
有没有办法在将视频上传到我的服务器之前降低其质量?
是的。但我建议不要在客户端这样做,原因如下:
缺点
-
用户输入不能被信任通过在客户端进行压缩,无论如何您都必须在服务器端进行一些健全性检查
- 视频压缩(或优化)涉及复杂的操作,JavaScript 的选择比其他语言少
- 由于操作很复杂,您给客户施加了压力,使其更加沉重。如果您不控制他们的配置(硬件、浏览器和版本),这种情况几乎只能在 Intranet 中遇到,您可能会降低(或失败)某些用户的浏览体验
- 由于所有这些原因,客户端错误更难跟踪和修复,并且与向服务器添加资源相比,您的开发成本很快就会更高
优点
- 你从你的服务器上卸载了一些计算
- 您可以帮助拥有小带宽但功能强大的计算机和最新浏览器的人上传大型视频
视频压缩工具
我的建议
【解决方案2】:
有什么方法可以在上传之前降低视频的质量
它到我的服务器?
请注意,压缩视频是一项繁重且耗时的操作,需要使用客户端编程语言 (javascript) 通过网络浏览器完成。您可能会发现像videoconverter.js 这样的javascript 库似乎无法正常工作。但是,在发送到服务器之前通过网络浏览器对 图像 执行相同的操作是有意义的,您可以找到它的工作库。
或者你有没有推荐一些其他的策略来减少
等待的时间?了解视频终于要播出了
托管在 S3 存储桶中,也许在我的
Spring Boot 服务器?
即使在服务器端也不建议进行如此繁重的操作。一种可能的客户端解决方案是修剪按秒排序的视频文件以制作嵌套视频文件,然后将它们发送到服务器。之后,您可以部分使用它们或将它们连接起来再次制作单个视频文件。
认为压缩视频的策略有意义吗
在 Spring Boot 服务器上可以减少视频的加载时间,
因为从 Spring Boot 视频被加载到 S3?。
这取决于您如何执行操作。按需压缩不是一个好的选择。使用后台工作进程在服务前生成新文件的压缩是一个不错的选择。
【解决方案3】:
我的理解是大多数视频文件已经被编解码器压缩了。但是,如果您需要额外的压缩,您可以在 Spring Boot 服务器上设置 GZIP 或 Brotli 之类的东西(我不相信这种类型的压缩在 Angular 中是不可能的)。