HEVC(H.265) 영상을 H.264로 변환하는 방법
HEVC(H.265)를 H.264로 바꾸려면 영상 스트림을 재인코딩하세요. Sume에서는 HDR이 아닌 클립 전체를 exact로 트림하면 H.264 MP4가 나옵니다.

HEVC를 H.264로 변환하려면 영상 스트림을 재인코딩하세요. H.265 프레임을 디코딩한 뒤 FFmpeg의 libx264 같은 H.264 인코더로 다시 압축하는 것입니다. 파일 이름을 바꿔도 코덱은 바뀌지 않으며, 압축된 패킷을 그대로 옮기는 스트림 카피로 새 컨테이너에 넣어도 마찬가지입니다. Sume에서는 HDR이 아닌 클립 전체를 기본 정밀도인 exact로 트림하세요. 결과는 H.264 영상이 담긴 새 MP4이며, 유지한 오디오는 AAC가 됩니다.
아래 내용은 2026-09-27에 확인한 영상 트림과 영상 검사 문서, Sume API 레퍼런스, FFmpeg의 ffmpeg 문서와 코덱 문서를 기준으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.
FFmpeg에서 HEVC를 H.264로 어떻게 변환하나요?
FFmpeg 문서는 트랜스코딩 예시로 다음 명령을 씁니다. 영상을 디코딩해 libx264로 다시 인코딩하고, 오디오는 그대로 복사합니다. -i에 HEVC 파일을 지정하고 출력 파일 이름을 정하세요.
- FFmpeg 문서는 원래 코덱을 디코딩하지 못하는 대상에 스트림을 넘겨야 하는 경우를 트랜스코딩의 전형적인 이유로 꼽습니다.
- 같은 문서에 따르면 인코딩은 대부분의 경우 화질을 떨어뜨리므로, 이전에 변환한 파일이 아니라 원본 파일에서 한 번만 변환하세요.
- 문서는 오디오의
-c:a copy같은 스트림 카피가 경우에 따라 동작하지 않을 수 있다고 덧붙입니다. 예를 들어 대상 컨테이너에 필요한 정보가 소스에 없을 때입니다.
ffmpeg -i INPUT.mkv -map 0:v -map 0:a -c:v libx264 -c:a copy OUTPUT.mp4Sume에 호스팅된 클립은 API로 어떻게 변환하나요?
Sume의 미디어 도구는 이전 Sume Job의 출력처럼 워크스페이스에 있는 media.sume.com 파일만 읽습니다. 이 규칙은 엔드포인트별로 받는 URL에서 설명합니다. 먼저 frames: false를 담은 POST /v1/video-inspect로 무료 프로브를 실행하세요. video_codec은 코덱을, duration_seconds는 길이를 알려 주고, hdr은 PQ와 HLG 소스를 표시합니다. 그다음 0부터 전체 길이까지 트림하세요.
precision의 기본값은 프레임 단위로 정확하게 재인코딩하는exact입니다.keyframe은 보내지 마세요. 스트림 카피라서 영상이 HEVC 그대로 남습니다.- 소스 길이를 넘는
end는 소스 끝으로 제한되고trim_clamped_to_source경고가 붙지만, 900초보다 긴 구간은video_trim_range_empty로 거부됩니다. - 기본
mode는async입니다.GET /v1/jobs/:id/status를 폴링한 다음GET /v1/jobs/:id/result를 읽으세요. 결과의video_url이 새 MP4입니다. 소스는 그대로입니다.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: hevc-to-h264-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/clip-hevc.mp4",
"start": 0,
"end": 64.2
}'변환된 파일은 어떤 설정을 쓰나요?
코덱이나 화질은 고를 수 없습니다. 트림은 codec, crf 등 ffmpeg 필드를 ffmpeg_fields_rejected로 거부합니다. 현재 트림 컴파일러는 다음과 같이 설정합니다.
| 설정 | 현재 exact 트림 |
|---|---|
| 영상 코덱 | libx264를 통한 H.264. FFmpeg 문서는 이를 H.264/MPEG-4 AVC 인코더 래퍼로 설명함 |
| 레이트 컨트롤 | libx264의 고정 품질 모드인 CRF 18, veryfast 프리셋 |
| 픽셀 형식 | yuv420p |
| 키프레임 | 소스의 프레임 레이트를 알면 대략 매초 하나 |
| 오디오 | 오디오를 유지하면 192 kbps AAC |
| 컨테이너 | +faststart를 적용한 MP4 |
| 크기와 프레임 레이트 | output을 지정하지 않으면 소스와 같음. output은 변당 256–2160픽셀, 24, 25, 30, 60 fps 중 하나 |
Sume로 HDR HEVC를 H.264로 변환할 수 있나요?
트림이나 필터로는 안 됩니다. 프로브의 hdr은 PQ와 HLG 전달 특성에서 true입니다. 현재 코드에서 exact 트림은 이런 소스를 hdr_source_unsupported로 거부하고 keyframe 정밀도나 SDR 소스를 쓰도록 안내하며, keyframe 트림은 스트림을 복사하므로 영상이 HEVC로 남습니다. 영상 필터도 HDR 소스를 거부합니다.
현재 코드에서 Timeline 렌더는 HDR 소스를 거부하지 않지만, Sume는 그 색을 어떻게 처리하는지 문서화하지 않았습니다. 그러니 렌더로 올바르게 변환될 것이라고 기대하지 마세요.
어떤 제한이 있나요?
- 트림은 최대 1,800초 길이의 소스를 읽고 Job당 최대 900초까지 쓰므로, 900초보다 긴 클립은 트림이 두 번 필요하고 1,800초보다 긴 클립은 트림할 수 없습니다. 이 조각들을 Timeline 렌더로 이어 붙이면 한 번 더 인코딩되며, 현재 코드에서는 libx264, CRF 20을 씁니다.
- exact 트림은 항상 MP4 안에 H.264로 씁니다. 다른 코덱을 고르는 필드는 없습니다.
- 트림은 Job당 과금되며 기본적으로 5.5% 에이전트 수수료가 더해집니다. 문서는 요율을
GET /v1/catalog에서 확인하라고 안내합니다. 프로브는 과금되지 않습니다. 다른 모든 엔드포인트가 반환하는 형식은 Sume API 출력 파일 형식에 정리되어 있습니다.
출처
관련 글
미디어 도구 카테고리의 다른 글
- Demand Gen 영상 규격: 크기, 길이, 4:5 버전
Demand Gen은 YouTube에 업로드한 5초 이상의 1:1, 16:9, 4:5 영상과 선택 사항인 9:16 영상을 받습니다. 4:5를 포함해 각 버전을 Sume로 만드는 방법입니다.
- 음성 인식 API로 오디오의 언어를 감지하는 방법
오디오 파일에서 말하는 언어를 감지하려면 언어 힌트 없이 음성 인식을 실행한 뒤, 결과에서 감지된 언어 코드와 신뢰도를 읽으세요.
- Facebook 인스트림 광고: 영상 규격과 15초 규칙
Facebook 인스트림 영상 광고는 16:9 또는 1:1, 최소 1080×1080, 데스크톱에서 5–15초입니다. 15초 이하는 끝까지 재생되고, 더 긴 광고는 15초에서 멈춥니다.
- 영상 오디오 딜레이 고치는 방법: 소리를 옮겨 싱크 맞추기
소리가 늦거나 빠른 영상은 오디오를 분리한 뒤, 어긋난 시간을 audio.source_in이나 슬롯의 source_in으로 지정해 클립을 다시 렌더링하면 고칠 수 있습니다.
작성자 Sume