Node.js Nodejs上传和处理视频

Node.js Nodejs上传和处理视频,node.js,file-upload,stream,aws-sdk,video-processing,Node.js,File Upload,Stream,Aws Sdk,Video Processing,我正在为我的申请寻找最好的方法。 我有视频上传功能前端将发送带有附加视频文件的上传/视频请求,然后我的后端将处理此请求,将减小视频的大小和质量(使用fluent ffmpeg ),然后将创建缩略图图像,基于视频的第一帧,然后将视频和他的缩略图图像上载到AWS S3 bucket,最后将压缩的视频和缩略图返回到前端。 我遇到的问题是,所有用于压缩、创建缩略图和上传的(后端)任务都非常耗时,有时(取决于视频大小和持续时间)我的nginx服务器将返回504网关超时,这是正常的。问题是: 如何处理这个案

我正在为我的申请寻找最好的方法。 我有视频上传功能前端将发送带有附加视频文件的
上传/视频
请求,然后我的后端将处理此请求,将减小视频的大小和质量(使用
fluent ffmpeg
),然后将创建缩略图图像,基于视频的第一帧,然后将视频和他的缩略图图像上载到AWS S3 bucket,最后将压缩的视频和缩略图返回到前端。 我遇到的问题是,所有用于压缩、创建缩略图和上传的(后端)任务都非常耗时,有时(取决于视频大小和持续时间)我的
nginx
服务器将返回504网关超时,这是正常的。问题是:

如何处理这个案件。我应该使用web套接字通知前端处理视频的进度,还是不需要等待所有这些操作完成。
我的目标是拥有这样的功能,我可以上传视频并显示一些视频处理进度条,用户可以“播放”应用程序,而不需要等到视频成功处理后再进行操作。

这似乎是一个架构问题。这是我更喜欢的解决方案之一

  • 使用队列并将进度存储在某个键值数据库中。您可能不熟悉队列,因此我建议您查看一些与队列相关的教程。当您使用amazon时,sqs可能会让您感兴趣。在Rails中,您可以检查sidekiq。拉威尔有拉威尔地平线

  • 而每个队列都是进度设计应用程序,因此它可以报告它。比如50%60%等等

  • 处理队列上的缩略图等


  • 如果你想扩大规模,你可以简单地增加队列的数量。我想其他人也是这样处理的。

    谢谢你的回复。我们将研究队列。非常感谢你的回答!