영상을 반으로 자르는 방법: 같은 길이로 나누기

영상을 반으로 자르려면 길이 ÷ 2 지점에서 파일 두 개로 나누세요. N등분이라면 조각 i는 i × 길이 ÷ N에서 시작합니다. 단계, 정밀도, 한도를 정리했습니다.

읽는 시간 4분Sume
전체 글

영상을 반으로 자르려면 길이를 확인하고, 중간 지점에서 자른 뒤, 두 조각을 각각 별도의 파일로 저장하세요. 첫 번째 조각은 0부터 길이 ÷ 2까지, 두 번째 조각은 길이 ÷ 2부터 끝까지입니다. 같은 길이의 조각 N개로 나눈다면, 조각 i(0부터 셈)는 i × 길이 ÷ N에서 시작해 길이 ÷ N만큼 이어집니다.

아래 Sume 관련 내용은 영상 검사와 영상 트림 문서를, FFmpeg 관련 내용은 ffmpeg 문서와 포맷 문서를 바탕으로 하며, 모두 2026-09-28에 확인했습니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.

Sume로 영상을 반으로 자르려면 어떻게 하나요?

Sume의 미디어 도구는 앞서 실행한 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 파일을 다룹니다. Sume에는 컴퓨터에 있는 파일을 올리는 공개 업로드 경로가 없습니다(엔드포인트별로 받는 URL). 호출 두 가지면 됩니다.

  • 길이를 읽으세요. frames: false를 담은 POST /v1/video-inspect는 프로브만 하며, 프로브는 과금되지 않습니다. 길이는 probe.duration_seconds이고, 나머지 필드는 영상의 길이와 fps 확인하기에서 다룹니다.
  • 각 절반은 POST /v1/video-trim으로 자르세요. start는 초 단위 인포인트이고, end와 duration 중 정확히 하나가 구간을 닫습니다. Job마다 [start, end)만 담은 새 MP4를 반환하며, 소스는 건드리지 않습니다.
  • 트림은 기본적으로 비동기입니다. Job이 종료 상태가 될 때까지 GET /v1/jobs/:id/status를 폴링한 뒤, GET /v1/jobs/:id/result에서 새 파일의 video_url을 읽으세요.
# A 611.4 s video: half 1 is [0, 305.7), half 2 is [305.7, 611.4)
curl -X POST https://api.sume.com/v1/video-trim \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: talk-half-2" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "start": 305.7,
    "end": 611.4
  }'

절반은 정확히 잘라야 하나요, 키프레임에서 잘라야 하나요?

트림의 precision 값은 두 가지이며, 긴 영상을 짧은 클립으로 나누기에서 비교합니다. 절반으로 자를 때 차이는 두 조각이 만나는 지점에 있습니다.

  • 기본값인 exact는 구간을 재인코딩하고(libx264, yuv420p) 정확한 프레임에서 자르므로, 두 절반이 빈틈도 반복도 없이 맞닿습니다.
  • keyframe은 재인코딩 없이 스트림을 복사하므로, 컷이 GOP(키프레임 사이에 이어지는 프레임 묶음) 하나만큼 일찍 시작될 수 있습니다. 그러면 두 번째 절반이 중간 지점보다 앞에서 시작해 첫 번째 절반의 끝부분을 반복할 수 있습니다. 실제 시작 지점은 결과의 actual_start_seconds에 나옵니다.

한도는 어떻게 되나요?

트림은 최대 1,800초 길이의 소스를 읽고, 조각 하나에 최대 900초까지 씁니다. 그래서 30분짜리 영상은 900초짜리 절반 두 개나 600초짜리 조각 세 개로 나눌 수 있지만, 그보다 긴 영상은 아예 트림할 수 없습니다. 파일 크기도 따져야 합니다. 현재 코드에서 트림과 검사는 300 MiB가 넘는 소스 파일을 source_too_large로 거부합니다. 조각마다 Job이 하나씩이며 요금은 Job당 $0.02이고, 기본적으로 5.5% 에이전트 수수료가 더해집니다.

영상 트림, 영상 검사, Sume의 현재 코드 기준, 2026-09-28 확인.
한도값
소스 길이최대 1,800초. 더 긴 소스는 source_duration_exceeded로 실패
소스 파일 크기300 MiB 초과 시 source_too_large로 실패(현재 코드)
조각 하나0.2–900초
트림 Job당 출력MP4 하나. 그래서 조각마다 Job 하나
길이 프로브과금 없음(frames: false)
끝을 넘는 경우소스를 넘는 end는 소스 끝으로 제한되고 trim_clamped_to_source 경고가 붙음

내 컴퓨터에서 영상을 반으로 자르려면 어떻게 하나요?

로컬 파일이라면 FFmpeg의 segment 먹서(muxer)가 영상 하나를 여러 파일로 나눠 씁니다. FFmpeg 문서는 이 먹서를 "outputs streams to a number of separate files of nearly fixed duration"(스트림을 거의 고정된 길이의 여러 개별 파일로 출력)이라고 설명합니다. -segment_times는 분할 지점 목록을 받으므로 시간을 하나만 주면 파일이 둘로 나뉩니다. 반면 -segment_time 60은 파일을 각각 약 일 분 길이의 조각으로 자릅니다.

  • -codec copy는 아무것도 재인코딩하지 않으며, 모든 세그먼트는 키프레임으로 시작합니다. 지정한 시간에 정확히 키프레임이 있지 않다면, 두 번째 조각은 그 시간 다음에 오는 키프레임에서 시작합니다.
  • -reset_timestamps 1은 각 조각의 타임스탬프가 영에 가까운 값에서 시작하게 하며, 문서에 따르면 이렇게 하면 조각을 재생하기가 쉬워집니다.
ffmpeg -i input.mp4 -codec copy -map 0 -f segment -segment_times 305.7 -reset_timestamps 1 part%03d.mp4

출처

관련 글

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

미디어 도구 글 전체 보기

작성자 Sume