Я запускаю команду ffmpeg, например:
ffmpeg -loglevel quiet -report -timelimit 15 -timeout 10 -protocol_whitelist file,http,https,tcp,tls,crypto -i ${inputFile} -vframes 1 ${outputFile} -y
Это выполняется в AWS лямбда-функции. Мой лямбда-тайм-аут составляет 30 секунд. По какой-то причине я все еще получаю сообщения "Время ожидания истекло". Я должен отметить, что я регистрируюсь до и после команды, так что я знаю, что это время ожидания во время этой задачи.
Обновление
В терминах всего лямбда-выполнения следующее:
Вызвать лямбду, чтобы получить токен доступа. Эта лямбда делает по запросу API. Время ожидания составляет 5 секунд. Максимальное время было 660 мс для одного запроса.
Сделайте еще один запрос API для проверки данных. Максимальное время составило 1,6 секунды.
Запустить FFMPEG
timelimit
, как предполагается, Exit after ffmpeg has been running for duration seconds in CPU user time.
. Теоретически, это не должно выполняться более 15 секунд, плюс, может быть, еще 2-3, прежде чем другие запросы.
timeout
, вероятно, здесь излишне. В руководстве было много определений, но я думаю, что это в основном ожидание ввода? В любом случае, я думаю, что timelimit
будет охватывать мои базы.
Обновление 2
Я проверил свой журнал отладки и увидел это:
Reading option '-timelimit' ... matched as option 'timelimit' (set max runtime in seconds) with argument '15'.
Reading option '-timeout' ... matched as AVOption 'timeout' with argument '10'.
Кажется, обе опции поддерживаются моей сборкой
Обновление 2
Я обновил свой код с большим количеством журналов. Я определенно вижу команду FFMPEG как последнюю выполняемую работу, прежде чем остановится на 30-секундный таймаут
Обновление 3 Я могу воспроизвести поведение, указывая на дорожку вместо полного манифеста. Я установил команду следующим образом:
ffmpeg -loglevel debug -timelimit 5 -timeout 5 -i 'https://streamprod-eastus-streamprodeastus-usea.streaming.media.azure.net/0c495135-95fa-48ec-a258-4ba40262e1be/23ab167b-9fec-439e-b447-d355ff5705df.ism/QualityLevels(200000)/Manifest(video,format=m3u8-aapl)' -vframes 1 temp.jpg -y
Несколько вещей здесь:
- Обычно я указываю на фактический манифест (не на дорожку), и все обычно работает намного быстрее
- Я понизил
timelimit
и timeout
до 5. Несмотря на это, когда я запускаю таймер, команда выполняется ~ 15 секунд каждый раз. Он выводит кучу ошибок, вероятно, из-за того, что это трек, а не полный манифест, а затем выплевывает желаемое изображение.
Полный вывод в https://gist.github.com/DaveStein/b3803f925d64dd96cd45ae9db5e5a4d0