1)在处理文件上传的同一服务器上安装FFMPEG,当视频上传并存储在EC2实例上时,请致电FFMPEG进行转换,然后完成后,将文件写入S3桶并处理原件。
这是如何扩展的?当许多用户同时上传时会发生什么?如何一次管理多个流程?我怎么知道何时启动另一个实例并加载平衡此配置?
2)有一台用于处理上传的服务器(更新数据库,重命名文件等)和一台用于执行转编码的服务器。同样,管理多个流程的最佳方法是什么?我应该为此查看Amazon SQS吗?我可以告诉转码服务器从上传服务器获取文件,还是应该将文件复制到转码服务器?我只能将所有文件存储在S3和SQS上,可以从那里阅读。我正在尝试尽可能少的流量。 我正在运行一个Linux盒作为上传服务器,并且在此上运行FFMPEG。
关于建立此类配置的最佳实践的建议将不胜感激。非常感谢
我不认为您每次有人上传用于转编码的文件时都会启动一个新的FFMPEG实例。 取而代之的是,您可能需要启动与拥有数量的CPU数量相同数量的FFMPEG进程,然后排队要转码的输入文件并按照收到的顺序进行操作。 您可以在一台计算机上进行所有操作,我认为接受上传并将其放入队列的服务器将需要很多CPU,并且可能可以在FFMPEG流程中共存。
toepectionderdestion您想扩展到多大的规模(如果您想做的不仅仅是在单台计算机上进行一些FFMPEG进程),您可以轻松地将其进行分配,这就是SQS派上用场的地方。 您可以每个核心运行1个FFMPEG进程,而不是在本地队列中查找数据,而是可以查看SQS。 然后,您可以在不同的机器上根据需要进行尽可能多的转码过程。
您可以检查
piper
。这是我最初为一家巨大娱乐公司制造的产品的开源版本,用于处理他们的视频经过大规模编码。您应该看看mazon弹性transcoder
。它解决了您在问题中提到的几乎所有问题。-2使用AWS lambda服务检测上传到S3存储桶的任何新视频,触发lambda功能以获得大拇指并转码,将输出发送到目标存储桶中。检查这个伟大的工具
@@binoculars需要一些JS&Gulp的理解,但是非常方便且光滑。 -3使用awstranscoder
。这几乎是昂贵的。如果您要围绕最近的一分钟,那么当您的视频短时,这是一笔巨大的费用。如果您是Netflix或Amazon在转码电影的长时间工作,那么ET会更有意义。 中