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