Подтвердить что ты не робот

Рекомендации по созданию масштабируемого сервера транскодирования видео на веб-сайтах Amazon?

Что думают люди, это самые важные проблемы при разработке приложения, которое позволит пользователям загружать видео и изображения на сервер и перекодировать их FFMPEG и хранить в amazon S3? У меня есть несколько вариантов:

1) установите FFMPEG на том же сервере, который обрабатывает загрузку файлов, когда видео загружается и сохраняется в экземпляре EC2, вызывается FFMPEG для его преобразования, а затем, когда это делается, напишите файл в ведро S3 и удалите оригинал.

Насколько это масштабируемо? Что происходит, когда многие пользователи одновременно загружаются? Как управлять несколькими процессами одновременно? Как узнать, когда запускать другой экземпляр и балансировать вес этой конфигурации?

2). Один сервер для обработки загрузок (обновление базы данных, переименование файлов и т.д.) и один сервер для выполнения транскодирования. Опять же, как лучше всего управлять несколькими процессами? Должен ли я смотреть на Amazon SQS для этого? Могу ли я сообщить серверу транскодирования, чтобы получить файл с сервера загрузки, или мне нужно скопировать файл на сервер транскодирования? Должен ли я просто хранить все файлы на S3, и SQS может читать оттуда. Я стараюсь как можно меньше трафика.

Я запускаю Linux-сервер в качестве сервера загрузки и запускаю FFMPEG.

Любые советы по наилучшим методам настройки такой конфигурации будут оценены. Большое спасибо

4b9b3361

Ответ 1

Я не думаю, что вы захотите запустить новый экземпляр FFMPEG каждый раз, когда кто-то загружает файл для перекодирования. Вместо этого вы, вероятно, захотите запустить такое же количество процессов FFMPEG, как и количество процессоров, которые у вас есть, а затем очередь на входные файлы, которые вы хотите перекодировать, и выполнять их в том порядке, в котором они были получены. Вы можете сделать все это на одном компьютере, я не думаю, что сервер, который принимает заказы и помещает их в очередь, потребует большого количества процессора и, вероятно, может прекрасно сосуществовать с процессами FFMPEG.

В зависимости от того, насколько масштаб вы хотите масштабировать (если вы хотите сделать больше, чем несколько процессов FFMPEG на одной машине), вы можете легко сделать это распределенным, и именно здесь SQS пригодится. Вы можете запустить 1 процесс FFMPEG на ядро, и вместо того, чтобы искать в локальной очереди данные, он может посмотреть на SQS. Затем вы можете создать столько процессов транскодирования, сколько потребуется, на разных машинах.

Недостатком этого является то, что вам нужно будет передать необработанные видео с сервера, который принимает их на сервер, который должен перекодировать их. Вы можете поместить их в S3, а затем вытащить их из S3, но я не помню с головы, если вам нужно заплатить за это. В качестве альтернативы вы можете просто сохранить их на жестком диске машины, которая их получила, и чтобы процесс перекодирования проходил туда, чтобы получить необработанные файлы.

Ответ 2

Вы должны взглянуть на Amazon Elastic Transcoder. Он решает почти все проблемы, о которых вы говорили в вопросе.

Ответ 3

На самом деле существует множество методов, которые можно использовать для решения вашей проблемы:

1 - Используя ec2 задания cron, вы можете запустить простой php script, который будет проверять вашу базу данных (например, каждые 30 секунд), если есть новое видео, доступное для транскодирования (вы можете использовать простой атрибут DB для этого, обработанный: Boolean)

2 - Используя aws Lambda-сервис для обнаружения любого нового видео, загруженного в ваш s3-ведро, запускайте функцию лямбда для получения больших пальцев и транскодирования, отправляйте вывод в целевое ведро. Проверьте этот greate-инструмент @binoculars требует понимания js и gulp, но он очень удобен и плавный.

3-Использование aws transcoder. Это довольно дорого. Если вы приближаетесь к ближайшей минуте, это огромная стоимость, когда ваши видео короткие. Если вы Netflix или Amazon запускаете длительные задания для транскодирования фильмов, ET делает гораздо больше смысла.

Ответ 4

Вы можете проверить Piper. Это версия с открытым исходным кодом продукта, который я изначально построил для огромной развлекательной компании, для обработки своего транскодирования видео по шкале.