FFmpeg занимает слишком много времени для создания файлов m3u8 из файла mp4 (166 МБ)

#node.js #ffmpeg #encoding #m3u8

Вопрос:

Я использую ffmpeg в nodejs для создания 4 различных разрешений (360p, 480p, 720p, 1080p). Я использую AWS lambda для каждого разрешения, и последние два занимают слишком много времени. Я конвертирую файл mp4 размером 166 МБ в файлы .ts (со всеми связанными сегментами). Это занимает более 900 секунд, и это превышает лимит для лямбда-тайм-аута.

Также моя цель состоит в том, чтобы закодировать видео mp4 максимального размера 4go… и это будет означать кодирование в течение максимум 900 секунд для каждого разрешения.

Я использовал этот веб-сайт, чтобы найти некоторые параметры: https://docs.peer5.com/guides/production-ready-hls-vod/

Это мои параметры, заданные ffmpeg:

 "ffmpegParams": [
    "-vf",
    "scale=-2:1920",
    "-c:a",
    "aac",
    "-ar",
    "48000",
    "-c:v",
    "h264",
    "-profile:v",
    "main",
    "-crf",
    "20",
    "-sc_threshold",
    "0",
    "-g",
    "48",
    "-keyint_min",
    "48",
    "-hls_time",
    "4",
    "-hls_playlist_type",
    "vod",
    "-b:v",
    "5000k",
    "-maxrate",
    "5350k",
    "-bufsize",
    "7500k",
    "-b:a",
    "192k",
    "-hls_segment_filename",
    "/tmp/1080p_d.ts",
    "/tmp/1080p.m3u8"
]
 

Также я попробовал использовать эти параметры «- vcodec», «libx264», «- предустановка», «сверхбыстрый», и это сделало его быстрее, но этого недостаточно…

Может быть, с моей командой что-то не так. Если бы кто-нибудь мог, может быть, просветить меня ? 🙂

Правка: В итоге я использовал EC Fargate, идеально подходящий для такого рода потребностей.

Комментарии:

1. ffmepg уделяет время своим потребностям. Если вы хотите использовать lambda, то вы не можете использовать aws lambda…

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