Skip to content

개요

Transcoder는 S3에 업로드된 원본 비디오를 여러 해상도 프리셋으로 변환하고, 최종 결과물을 HLS 스트림으로 배포하는 내부 처리 파이프라인이에요.

작업 생성 Lambda는 DynamoDB에 작업을 저장하고 Step Functions 실행을 시작해요.

Probe, 청크 변환, Finalize 단계가 순서대로 실행되고, 작업이 끝나면 요청에서 지정한 SQS queue로 결과 메시지를 보내요.

최종 출력 위치에는 master.m3u8, variant playlist, .ts segment가 생성돼요.

구성 요소

구성 요소역할
Lambda작업 생성, 작업 취소, HTTP 작업 조회를 처리해요.
Step FunctionsProbe, Transcode, Finalize 단계를 오케스트레이션해요.
DynamoDB작업 상태, 실행 계획, 결과 정보를 저장해요.
S3원본 파일, 내부 청크 산출물, 최종 HLS 결과물을 저장해요.
SQS성공 또는 실패 결과 메시지를 전달해요.
ffmpeg/ffprobe원본 분석, 청크 변환, HLS 패키징을 수행해요.

인코딩 프리셋

MaxEncodingPreset은 생성할 최대 출력 프리셋이에요.

요청한 프리셋 이하의 출력만 생성되고, 원본보다 큰 출력이나 같은 해상도와 FPS로 중복되는 variant는 생성되지 않아요.

기준 해상도픽셀 수CRF
UHD3840x21608,294,40026
QHD2560x14403,686,40024
FHD1920x10802,073,60023
HD1280x720921,60020
SD854x480409,92020

입력 제한

Probe 단계에서 원본 비디오를 분석한 뒤 입력 제한을 검증해요.

제한
최대 길이14,400
최대 해상도3840x2160
최소 해상도 변360px
최대 프레임레이트120fps
출력 최대 프레임레이트60fps
허용 화면비0.25 이상 4 이하

출력 구조

작업이 성공하면 요청의 Output.BucketOutput.Prefix 아래에 HLS 파일이 업로드돼요.

text
{Output.Prefix}/master.m3u8
{Output.Prefix}/{Preset}.m3u8
{Output.Prefix}/{Preset}/seg_00000.ts
{Output.Prefix}/{Preset}/seg_00001.ts