해상도가 다른 영상 두 개를 합치는 방법
해상도가 다른 영상 두 개는 둘 다 한 프레임 크기로 스케일해 합칩니다. 클립마다 크롭, 여백, 블러, 늘이기 중 하나로 맞추고 소리와 함께 이어 붙이세요.

해상도가 다른 영상 두 개를 합치려면 결과물의 프레임 크기를 하나 정하고, 두 클립을 모두 그 크기로 스케일한 뒤 앞뒤로 이어 붙이세요. 화면 비율까지 다르면 각 클립은 프레임을 채우도록 잘리거나, 남는 부분이 여백으로 채워지거나, 프레임에 맞게 늘어납니다. Sume에서는 Timeline 1.0 렌더 한 번으로 스케일과 이어 붙이기를 모두 처리합니다. 출력 크기를 정하고, 클립마다 fit을 지정하고, 클립마다 분리한 소리를 audio.parts[]로 넘기세요.
아래 내용은 2026-09-27에 확인한 Timeline 1.0과 오디오 분리 문서, Sume API 레퍼런스의 필드 설명을 기준으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.
Sume로 크기가 다른 클립 두 개를 어떻게 합치나요?
두 클립 모두 이전 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 파일이어야 합니다. 이 규칙은 엔드포인트별로 받는 URL에서 설명합니다. 그다음 두 종류의 호출을 합니다.
POST /v1/audio-detach로 클립마다 소리를 분리하세요. 현재 컴파일러에서 렌더의 소리는 오디오 스파인과 선택 사항인 사운드트랙에서만 나오고 클립에서는 전혀 나오지 않으므로, 이렇게 해야 클립마다 자기 소리를 유지합니다. 기본 출력인 wav가 Timeline 스파인에 맞는 파일이며, 결과에는 그 파일의duration_seconds가 나옵니다.POST /v1/timeline-1.0/render로 한 번 렌더링하세요. 클립마다video[]슬롯을 하나씩 앞뒤로 이어 두고, 분리한 파일은 같은 순서로audio.parts[]에 넣으면 틈 없이 이어집니다.audio.duration_seconds가 출력 길이이므로 합계로 설정하세요.video[0].start는 0이어야 하고, 그 뒤의 각start는 그때까지의 누적 합계입니다.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: merge-two-clips-001" \
-d '{
"output": { "width": 1920, "height": 1080 },
"audio": {
"duration_seconds": 50,
"parts": [
{ "url": "https://media.sume.com/artifacts/artf_demo/landscape.wav", "duration": 30 },
{ "url": "https://media.sume.com/artifacts/artf_demo/portrait.wav", "duration": 20 }
]
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/landscape.mp4", "start": 0, "duration": 30 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/portrait.mp4", "start": 30, "duration": 20, "fit": "blur" }
]
}'클립마다 어떤 fit을 써야 하나요?
fit은 클립의 화면 비율이 출력 프레임과 다를 때 어떻게 처리할지 정하며, 기본값은 cover입니다. 예시에서 가로 클립은 기본값을 그대로 쓰고, 세로 클립은 위아래가 잘리는 대신 자신을 흐리게 한 사본으로 여백을 채웁니다. 프레임보다 작은 클립은 확대되는데, 이때 픽셀은 늘어나도 디테일은 늘지 않습니다. 그러니 출력 크기는 더 큰 클립이나 영상을 올릴 곳에 맞추세요.
| `fit` | 화면 비율이 다른 클립의 처리 |
|---|---|
cover(기본값) | 프레임을 가득 채울 때까지 스케일하고, 넘치는 부분은 잘라 냄. 가로 프레임에 넣은 세로 클립은 위아래가 잘림. |
contain | 프레임 안에 들어갈 때까지 스케일하고, 남는 부분은 검은 여백으로 채움. |
blur | 검은 여백 대신 프레임을 흐리게 한 사본으로 채움. |
stretch | 프레임 크기에 정확히 맞춰 스케일하므로 비율이 왜곡됨. |
프레임 레이트까지 다르면 어떻게 되나요?
렌더의 프레임 레이트는 하나입니다. output.fps를 생략하면 소스가 이미 쓰고 있는 레이트를 사용하는데, 가장 긴 영상 소스가 레이트를 정하고, 레이트가 있는 소스가 하나도 없을 때만 30을 씁니다. 레이트가 다른 클립은 몇 프레임마다 한 프레임을 반복하거나 버려서 맞추며, 이는 움직임에서 떨림(judder)으로 나타납니다. 결과에는 소스가 원한 레이트와 함께 output_fps_resamples_sources 경고가 붙습니다.
레이트를 직접 고르려면 output.fps를 24, 25, 30, 60 중 하나로 설정하세요. 그 레이트로 재생되지 않는 클립은 같은 방식으로 리샘플링됩니다. 레이트가 정해지는 방식은 영상의 프레임 레이트나 해상도 바꾸기에서 자세히 다룹니다.
한도는 어떻게 되고, 합치는 비용은 얼마인가요?
- 렌더는
video[]슬롯을 1개에서 200개까지 받고, 출력 길이는 1초에서 1,800초까지입니다.output.width와output.height는 256에서 2160 사이의 짝수 정수이며, 생략하면 1080×1920 세로 프레임이 됩니다. audio.parts[]에는 조각을 최대 20개까지 넣을 수 있고, 선언한 조각 길이의 합이audio.duration_seconds보다 짧으면audio_parts_shorter_than_duration으로 거부됩니다. 현재 코드에서는 조각들의 채널 구성도 같아야 하며, 다르면 렌더가audio_parts_channel_mismatch로 실패합니다. 한 클립이 모노라면 두 클립 모두channels: "mono"로 분리하세요.- 오디오 분리는 최대 1,800초 길이의 소스를 읽고 최대 900초까지 쓰며, 오디오 트랙이 없는 클립에서는
detach_source_has_no_audio로 실패합니다. 두 클립 모두 소리가 없다면parts대신audio.mode: "silence"를 보내세요. - 렌더는 API 요금에 출력 분당 $0.10로 나와 있고
ceil(audio.duration_seconds / 60)분으로 예약되며, 각 오디오 분리는 Job당 고정 요율로 과금됩니다. 둘 다 기본적으로 5.5% 에이전트 수수료가 더해지며, 문서는 두 요율 모두GET /v1/catalog에서 확인하라고 안내합니다.POST /v1/timeline-1.0/plan으로 하는 plan 사전 검사는 과금 없이 타임라인 문서를 검사합니다.
출처
관련 글
미디어 도구 카테고리의 다른 글
- Meta 영상 광고 규격: 4:5 피드·9:16 Reels·세이프 존
Meta는 Facebook Feed 영상 광고에 4:5(1440×1800)를, Instagram에 9:16과 Reels 세이프 존을 제시합니다. Sume로 각 규격을 만들고 자막을 배치하는 법입니다.
- 이미지를 넣어 MP3를 MP4로 변환하는 방법
이미지 한 장으로 MP3를 MP4로 바꾸세요. Timeline 1.0 렌더가 지정한 프레임 크기로 트랙 전체(최대 30분) 동안 이미지를 띄워 둡니다.
- MP4 영상에 소리가 안 나오나요? 오디오가 사라진 곳 찾기
소리가 안 나는 MP4는 오디오 트랙이 없거나, 트랙이 무음이거나, 플레이어가 디코딩하지 못하는 트랙입니다. 무료 프로브로 확인한 뒤 소리를 잃은 단계를 고치세요.
- Google Performance Max 영상 규격: 크기와 길이
Performance Max는 16:9, 1:1, 9:16 영상을 하나씩, 10초 이상, 1920×1080, 1080×1080, 1080×1920으로 권장합니다. Sume로 각각 만드는 방법입니다.
작성자 Sume