node.js - Nodejs上传并处理视频

标签 node.js file-upload stream aws-sdk video-processing

我正在寻找适合我的应用程序的最佳方法。 我有视频上传功能。 前端将发送带有附加视频文件的上传/视频请求,然后我的后端将处理此请求,将减小大小并视频质量(使用 Fluent-ffmpeg ),然后根据视频的第一帧创建缩略图,然后将视频及其缩略图上传到AWS S3存储桶,最后将压缩后的视频和缩略图返回到前端。 我遇到的问题是,所有用于压缩创建缩略图上传的(后端)任务都非常耗时,有时(取决于视频大小和持续时间)我的 nginx 服务器将返回 504 Gateway Time-out,这是正常的。问题是:

如何处理这种情况。我是否应该使用网络套接字通知前端处理视频的进度,或者我不需要等到所有这些操作完成。 我的目标是具有功能,我可以上传视频并显示视频处理的一些进度条,并且用户可以“播放”应用程序,而不需要等待视频成功处理

最佳答案

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

  1. 使用队列并将进度存储在某些键值数据库中。您可能对队列不熟悉,所以我建议您查看一些与队列相关的教程。当您使用亚马逊时,您可能会对 sqs 感兴趣。在 Rails 中你可以检查 sidekiq。 Laravel 有 Laravel Horizo​​n。

  2. 虽然每个队列都是进度设计应用程序,所以它可以报告它。比如 50% 60% 等等。

  3. 也在队列中处理缩略图等。

如果您想扩展,只需增加队列数量即可。我认为其他人也是这样处理的。

关于node.js - Nodejs上传并处理视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67268491/

相关文章:

node.js - 如何防止在 Node.js 中使用包之外的相对路径 require ?

ruby-on-rails - Rails PDF 上传恶意内容漏洞

python - 如何使用 selenium、python 上传文件(图片)

swift - 如何快速直播地点?例如 uber、lyft 等

stream - FFmpeg无法解码H264流/帧数据

javascript - 在 .ejs 文件中获取当前页面?

javascript - NodeJs : How to export an async value to another file?

node.js - 我如何将值设置为 redis 中特定键的列表?

caching - 当我通过 FTP 更新文件时,文件没有改变

c++ - 从 IStream 加载 PNG 时 GDI+ 崩溃