У меня есть работающие приложения на Rails 5, использующие Reactjs для внешнего интерфейса и React Dropzone Uploader для загрузки видеофайлов с использованием carrierwave.
Пока что отлично работает перечисленные ниже -
- Пользователь может загружать видео и видео, закодированные на основе выбора, сделанного пользователем - HLS или MPEG-DA SH для потоковой передачи в Интернете.
- После загрузки видео на сервер начинается потоковая передача: -
- FIRST, копирование видео в папку
/tmp
. - Запуск сценарий bash, использующий
ffmpeg
в транскодирование загруженное видео с использованием предопределенных команд для создания новых фрагментов видео в папке /tmp
. - Как только фоновое задание выполнено, все видео загружается на AWS S3, как это работает по умолчанию
carrierwave
- Итак, когда загружено несколько видео, все они копируются в папку / tmp, а затем транскодируется и в конечном итоге загружается в
S3
.
Мои вопросы, по которым мне нужна помощь, перечислены ниже -
1 - описанный выше процесс подходит для небольших видео, НО что если Есть много одновременных пользователей, загружающих 2 ГБ видео ? Я знаю, что это убьет мой сервер, так как моя папка /tmp
будет увеличиваться и занимать всю память, делая ее жесткой до d ie. Как я могу разрешить одновременное видео загружать видео, не влияя на потребление памяти моим сервером ?
2- Есть ли способ, где я могу напрямую загрузить видео сначала на AWS -S3, а затем использовать еще одно приложение прокси-сервера / дочернее приложение для кодирования видео с S3 , загрузить его на дочерний сервер, преобразовать и снова загрузить в пункт назначения? но это почти то же самое, но в облаке, где потребление памяти может быть по требованию, но не будет экономически эффективным.
3 - Есть ли некоторые простые и экономически эффективные способ, которым я могу загружать большие видео, транскодировать их и загружать их в AWS S3, не влияя на память моего сервера. Мне не хватает какой-то технической архитектуры здесь.
4- Как работает Youtube / Netflix, я знаю, что они делают то же самое умным способом, но может кто-нибудь помочь мне улучшить это?
Спасибо в заранее.