영상을 용량별로 나누는 방법: 재인코딩 없이 분할하기
영상을 용량별로 나누려면 영상 길이에 한도 ÷ 파일 크기를 곱해 조각 길이를 구하고, 그 길이로 재인코딩 없이 자른 뒤 각 조각의 크기를 확인하세요.

영상을 파일 크기(용량) 기준으로 나누려면 한도 안에 몇 초가 들어가는지 계산하고, 영상을 그 길이의 조각으로 자르세요. 조각 길이 = 영상 길이 × 한도 ÷ 파일 크기이며, 여기서 안전 여유분을 뺍니다. 재인코딩 없이 자르세요. 그러면 각 조각이 원본 바이트 중 대략 자기 몫과 원래 화질을 유지합니다. 그런 다음 각 조각의 크기를 확인하세요.
아래 Sume 관련 내용은 영상 트림과 영상 검사 문서, Sume API 레퍼런스를, FFmpeg 관련 내용은 ffmpeg, 포맷, 코덱 문서를 바탕으로 하며, 모두 2026-09-28에 확인했습니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.
조각 하나의 길이는 어떻게 계산하나요?
목표는 한도보다 낮게 잡고, 조각 수는 올림하고, 고르게 나누세요. 1,200초, 240 MB짜리 영상을 50 MB 한도에 맞추는 예는 다음과 같습니다.
- 이 파일은 평균 초당 240 ÷ 1,200 = 0.2 MB입니다.
- 한도보다 10% 낮은 45 MB를 목표로 잡습니다. 240 ÷ 45 = 5.3이므로 1,200 ÷ 6 = 200초짜리 조각 6개로 자르면, 조각마다 약 40 MB가 됩니다.
- 여유분은 남겨 두세요. 비트레이트는 영상 안에서도 달라지며, 움직임이 많은 구간은 평균보다 초당 더 많은 바이트를 담을 수 있습니다.
Sume로 영상을 용량별로 나누려면 어떻게 하나요?
영상은 앞서 실행한 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 파일이어야 합니다. Sume에는 컴퓨터에 있는 파일을 올리는 공개 업로드 경로가 없습니다(엔드포인트별로 받는 URL). 또한 현재 코드에서 트림과 검사는 300 MiB가 넘는 소스 파일을 source_too_large로 거부하므로, 그보다 큰 파일은 아래에서 설명하는 대로 FFmpeg에서 나누세요.
- 먼저 프로브하세요.
frames: false를 담은POST /v1/video-inspect는probe.size_bytes와probe.duration_seconds를 반환하며, 프로브는 과금되지 않습니다. 영상 비트레이트 확인 방법에서 보듯이 이 두 값으로 비트레이트도 구할 수 있습니다. - 각 조각은
POST /v1/video-trim에precision: "keyframe"을 주어 자르세요. 재인코딩 없는 스트림 카피입니다. 조각 i(0부터 셈)는start= i × 조각 길이,duration= 조각 길이로 둡니다. - 모든 출력을 같은 방법으로 프로브해
size_bytes를 한도와 비교하세요. 한도를 넘는 조각이 있으면 그 구간을 더 짧은 조각 두 개로 나누세요. - 복사한 조각은 최대 GOP(group of pictures) 하나만큼 일찍 시작될 수 있으므로, 앞 조각의 한순간을 반복합니다. 실제 시작 지점은 결과의
actual_start_seconds에 나옵니다.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: webinar-size-part-2" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/webinar.mp4",
"start": 400,
"duration": 200,
"precision": "keyframe"
}'왜 조각마다 재인코딩하지 않나요?
복사한 조각은 원본 바이트 중 대략 자기 몫을 유지하지만, 재인코딩한 조각은 크기를 예측할 수 없기 때문입니다. 기본값인 exact 트림은 현재 코드에서 libx264, CRF 18로 재인코딩하는데, FFmpeg 문서는 CRF를 고정 품질 모드라고 설명합니다. 트림에는 비트레이트나 목표 크기 필드도 없습니다. 재인코딩한 파일이 오히려 더 커질 수 있는 이유는 영상 용량 줄이는 방법에서 설명합니다.
한도는 어떻게 되나요?
조각 하나가 트림 Job 하나이며 요금은 Job당 $0.02이고, 기본적으로 5.5% 에이전트 수수료가 더해집니다.
FFmpeg에서 영상을 용량별로 나누려면 어떻게 하나요?
내 컴퓨터에서는 FFmpeg의 segment 먹서(muxer)가 영상을 거의 고정된 길이의 개별 파일로 나눠 쓰므로, 계산한 조각 길이를 지정하세요. -codec copy를 쓰면 아무것도 재인코딩되지 않고 모든 세그먼트가 키프레임에서 시작하므로, 각 조각은 그 길이보다 조금 길거나 짧아집니다.
FFmpeg에는 출력 하나의 쓰기를 바이트 한도에서 멈추는 -fs도 있습니다. 문서에 따르면 파일이 "slightly more than the requested file size"(요청한 파일 크기보다 약간 크게) 나오므로, 한도보다 낮게 설정하세요.
ffmpeg -i input.mp4 -codec copy -map 0 -f segment -segment_time 200 -reset_timestamps 1 part%03d.mp4출처
관련 글
미디어 도구 카테고리의 다른 글
- Steam 캡슐 이미지 크기: 헤더·소형·메인·세로 캡슐
Steam 캡슐은 920×430(헤더), 462×174(소형), 1232×706(메인), 748×896(세로)입니다. 캡슐마다 넣을 수 있는 내용과 크기에 맞게 아트를 만드는 방법을 정리했습니다.
- 텍스트 기반 영상 편집이란? 전사문으로 컷을 만드는 방법
텍스트 기반 영상 편집은 전사문에서 단어를 지워 영상을 자르는 방식입니다. 단어 타이밍이 컷 목록이 되는 과정과 Sume API로 이를 만드는 방법을 설명합니다.
- 영상 편집 컷 종류: 하드 컷, 점프 컷, J컷, L컷 등
영상 편집의 주요 컷 종류는 하드 컷, 점프 컷, J컷과 L컷, 매치 컷, 컷어웨이, 크로스 컷, 스매시 컷입니다. 각 컷의 역할과 만드는 방법을 정리했습니다.
- 세로 영상 해상도: 720p부터 4K까지 9:16 크기
세로 영상 해상도는 1080p가 1080×1920, 720p가 720×1280, 4K가 2160×3840입니다. 9:16 크기를 구하는 방법과 Sume가 렌더링할 수 있는 크기를 정리했습니다.
작성자 Sume