영상의 검은 여백을 크롭으로 없애는 방법

영상에 박혀 있는 검은 여백은 크롭해야만 없어집니다. 원본 크기 스틸에서 여백을 잰 다음, Sume에서 FFmpeg의 crop 필터로 잘라 내세요.

읽는 시간 5분Sume
전체 글

영상의 검은 여백을 없애려면 크롭으로 잘라 내세요. 여백이 얼마나 두꺼운지 잰 다음, 프레임을 여백 안쪽의 화면만 남도록 잘라 냅니다. 위아래(레터박스)나 양옆(필러박스)의 여백이 파일에 박혀 있다면 모든 프레임의 일부이므로 크롭으로만 없앨 수 있고, 결과 프레임은 더 작아집니다. Sume에서는 두 단계 모두 이미 media.sume.com에 호스팅된 클립을 받습니다. POST /v1/video-frames로 뽑은 원본 크기 스틸에서 여백을 잰 다음, POST /v1/video-filter로 크롭하세요.

Sume 관련 내용은 영상 프레임과 영상 필터 문서, Sume API 레퍼런스를, crop 문법은 FFmpeg 필터 문서를 따르며, 모두 2026-09-27에 확인했습니다. Sume 코드에서 확인한 동작은 현재 동작하는 방식대로 설명합니다.

검은 여백의 크기는 어떻게 재나요?

여백의 경계가 잘 보이는 밝은 장면에서 스틸 하나를 뽑고, 아무 이미지 편집기에서나 검은 픽셀 행이나 열을 세세요. POST /v1/video-frames는 지정한 시각의 스틸을 반환하며, max_edge를 생략하면 소스 프레임 크기로 반환하고, 과금되지 않습니다. format: "png"를 쓰면 무손실 스틸을 받습니다.

클립은 이전 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 아티팩트나 에셋이어야 하며, 이 규칙은 엔드포인트별로 받는 URL에서 설명합니다. 제출하면 항상 202가 돌아옵니다. resource_status가 ready가 될 때까지 GET /v1/video-frames/:id를 읽으면, 각 프레임에 url, width, height가 담겨 있습니다. 이 경로의 나머지 내용은 영상에서 프레임 추출하기에서 다룹니다.

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bars-still-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/letterboxed.mp4",
    "at": [5],
    "format": "png"
  }'

검은 여백은 어떻게 잘라 내나요?

화면의 크기와 위치에 맞춰 크롭하세요. FFmpeg의 crop은 출력 너비, 높이, x, y를 이 순서로 받습니다. x와 y는 남길 영역의 왼쪽 위 모서리 위치이며, 생략하면 영역이 가운데에 놓입니다. 저희가 계산한 예는 다음과 같습니다.

  • 위아래에 140픽셀 여백이 있는 1920×1080 파일에는 1920×800 화면이 들어 있습니다. crop=1920:800:0:140을 쓰거나, 가운데를 유지하는 crop=iw:ih-2*140을 쓰세요.
  • 1920×1080 파일에 양옆 여백과 함께 들어 있는 9:16 클립은 너비가 약 608픽셀입니다. crop=608:1080:656:0을 쓰세요.
  • 세로 1080×1920 파일에 레터박스로 들어 있는 16:9 클립은 높이가 약 608픽셀입니다. crop=1080:608:0:656을 쓰세요.
  • 짝수를 쓰세요. FFmpeg는 기본적으로 서브샘플링된 영상의 크롭 값을 가장 가까운 더 작은 값으로 내림합니다. 가장자리에 얇고 어두운 선이 남으면 그쪽을 두 픽셀 더 잘라 내세요.
  • Sume 자체의 crop op는 사각형을 프레임에 대한 비율로 받고 현재는 이를 짝수 픽셀로 내림하므로, 픽셀 단위로 잰 여백에는 filtergraph 방식이 더 간단합니다. POST /v1/video-filter/check로 인코딩하기 전에 어느 방식이든 무료로 검증할 수 있습니다.
curl -X POST https://api.sume.com/v1/video-filter \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: remove-bars-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/letterboxed.mp4",
    "filtergraph": "crop=1920:800:0:140"
  }'

왜 영상에 여전히 검은 여백이 보이나요?

파일에서 뽑은 스틸에는 여백이 없는데 재생할 때 여백이 보인다면, 여백은 파일에 있는 것이 아닙니다. 영상의 모양이 스크린의 모양과 달라서 플레이어가 여백을 덧붙이는 것입니다. 크롭한 1920×800 화면은 여전히 16:9 스크린보다 옆으로 넓으므로 플레이어가 다시 레터박스를 넣습니다. 화면을 왜곡하지 않고 그 스크린을 채우는 유일한 방법은 영상을 정사각형으로 만들기나 세로 영상을 가로로 만들기에서처럼 화면을 스크린 모양에 맞게 크롭해 가장자리를 잘라 내는 것입니다.

Sume가 여백을 자동으로 찾아 주나요?

아니요, 직접 재야 합니다. 검지 않은 영역을 감지하는 FFmpeg의 cropdetect 필터는 현재 Sume의 필터 허용 목록에 없고, 알 수 없는 필터는 invalid_filtergraph로 실패합니다. 또한 크롭은 모두 픽셀을 덜 남기는 재인코딩입니다. 같은 Job에서 결과의 크기를 바꾸려면 한 변을 -2로 지정한 scale을 추가하세요. 그러면 화면 비율을 유지하면서 짝수 크기가 됩니다. 크기 변경은 영상의 프레임 레이트나 해상도 바꾸기에서 다룹니다.

한도는 어떻게 되나요?

크롭된 MP4는 소스의 프레임 레이트와 오디오를 그대로 가진 새 파일이며, 소스는 그대로 남습니다.

영상 프레임, 영상 필터, Sume API 레퍼런스 기준, 2026-09-27 확인.
항목한도
영상 프레임소스 최대 300초, 호출당 at 값 1–24개, 과금 없음
스틸 크기max_edge를 생략하면 소스 크기, max_edge는 긴 변을 16–2160으로 제한
영상 필터 소스최대 300초, 더 길면 output_duration_exceeded로 실패
필터 프로그램ops 최대 8개, 그다음 최대 2,048자와 이름 있는 필터 32개까지의 그래프
crop opwidth와 height는 프레임의 0.05에서 1 사이, x+width와 y+height는 최대 1
HDR 소스필터가 PQ와 HLG를 hdr_source_unsupported로 거부
필터 과금검사는 무료, 인코딩은 Job당 과금(GET /v1/catalog에서 확인)

출처

관련 글

미디어 도구 카테고리의 다른 글

미디어 도구 글 전체 보기

작성자 Sume