Очередь заданий Linux для преобразования FFmpeg
Я запускаю веб-сервер Debian, на котором будет размещаться веб-сайт, на котором пользователи смогут загружать видеофайлы и воспроизводить их.
Следовательно, видеофайлы должны быть преобразованы в надлежащий формат (mp4, ogg, webm) для совместимости с различными браузерами.
До сих пор я написал bash-скрипт, который добивается цели с помощью FFmpeg. Проблема в том, что когда многие пользователи загружают видео одновременно, мой веб-сервер работает очень медленно.
Я ищу короткое и простое решение, которое ставит в очередь разные вызовы сценария преобразования, поэтому одновременно может работать только один экземпляр. Я пытался использовать пакетную команду, но я не могу найти много информации о том, как ее использовать. Я также рассмотрел создание именованного канала, также безуспешно.
Любая помощь высоко ценится
2 ответа
Поместите все загруженные файлы в один каталог на любом используемом веб-языке.
Затем вы можете запланировать cronjob с вашим скриптом, чтобы он запускался, например, каждый час и конвертировал видео, которые находятся в каталоге pending /.
Возможно, вы захотите использовать flock, чтобы только один экземпляр этого скрипта мог запускаться одновременно, даже если это занимает больше времени, чем ожидалось, и cron запускает другой скрипт.
Внутри скрипта вы можете использовать команду nice, чтобы уменьшить ее приоритет, чтобы веб-сервер имел более высокий приоритет.
Я создал сервер кодирования видео python3 для внутреннего использования. С несколькими модами это должно помочь вам. На моем python-сервере все, что вам нужно сделать, это создать символическую ссылку в специальном каталоге очереди, и он обрабатывает ее оттуда, а также обрабатывает коммерческий пропуск (из которых я являюсь портером Linux), который вы можете прокомментировать, если вы не заинтересованы в этом.