#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. Я понимаю, но я должен сделать это с помощью лямбды, поэтому мне нужно придумать способ. Возможно, разделив мой файл на несколько частей и закодировав каждую из них…