영상 프리즈 프레임 만드는 방법: 마지막 또는 원하는 프레임 정지

tpad 필터 호출 한 번으로 영상의 마지막 프레임을 정지하거나, Timeline 렌더에서 원하는 프레임을 클립의 두 부분 사이에 스틸로 넣어 클립 중간에서 멈추세요.

읽는 시간 5분Sume
전체 글

영상에 프리즈 프레임을 넣으려면, 화면의 움직임을 멈추고 프레임 하나를 몇 초 동안 띄워 두세요. 마지막 프레임이라면 FFmpeg의 tpad 필터로 할 수 있습니다. tpad=stop_mode=clone:stop_duration=3은 마지막 프레임의 복사본으로 삼 초를 덧붙입니다. Sume에 이미 호스팅된 클립이라면 영상 필터 호출 한 번으로 끝납니다. 중간에서 멈추려면 영상 프레임으로 그 프레임을 스틸로 추출한 뒤, Timeline 1.0 렌더에서 클립의 두 부분 사이에 별도 슬롯으로 넣으세요.

아래 내용은 2026-09-27에 확인한 Sume의 영상 필터, 영상 프레임, 오디오 분리, Timeline 1.0 문서와 Sume API 레퍼런스, 그리고 FFmpeg의 ffmpeg 도구, 필터, 유틸리티 문서를 기준으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.

영상의 마지막 프레임은 어떻게 정지하나요?

FFmpeg의 tpad 필터를 쓰세요. stop_mode=clone은 마지막 프레임의 복제본으로 끝을 채우고(기본값인 add는 단색 프레임으로 채웁니다), stop_duration은 채울 길이를 정합니다. 단위 없이 숫자만 쓰면 초 단위입니다. 로컬 컴퓨터에서는 FFmpeg가 파일을 재인코딩하면서 -vf로 이 필터를 적용합니다. 명령은 ffmpeg -i clip.mp4 -vf tpad=stop_mode=clone:stop_duration=3 frozen.mp4입니다.

Sume에서는 같은 필터를 POST /v1/video-filter의 filtergraph로 보내세요. tpad는 현재 Sume의 필터 허용 목록에 있습니다.

  • 클립은 앞서 실행한 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 아티팩트나 에셋이어야 하며, 길이는 최대 300초입니다. Sume에는 컴퓨터에 있는 파일을 올리는 공개 업로드 경로가 없습니다(엔드포인트별로 받는 URL). POST /v1/video-filter/check는 같은 본문을 무료로 검증합니다.
  • 서버는 여러분의 그래프를 영상 스트림에 감싸 적용하며, 문서에 따르면 출력은 소스의 오디오를 이어받습니다. 따라서 소리는 원래 클립의 소리가 끝나던 곳에서 끝나고, 정지된 몇 초 동안은 소리가 없습니다.
  • start_mode=clone과 start_duration을 쓰면 대신 첫 프레임을 정지합니다. 이 방법은 화면만 늦추고 오디오는 늦추지 않으므로, 소리를 교체할 클립에만 쓰세요.
curl -X POST https://api.sume.com/v1/video-filter \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: freeze-end-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
    "filtergraph": "tpad=stop_mode=clone:stop_duration=3"
  }'

영상 중간의 프레임은 어떻게 정지하나요?

그 프레임에서 클립을 나누고, 두 부분 사이에 그 프레임의 스틸을 띄워 두세요. 호출은 세 번 필요합니다.

  • at: [8]과 format: "png"로 POST /v1/video-frames를 호출하면 8초 시점의 내구성 있는 이미지가 반환되며, max_edge를 생략하면 소스 크기 그대로입니다. resource_status가 ready가 되면 GET /v1/video-frames/:id에서 frames[].url을 읽으세요. 이 호출은 과금되지 않고, 최대 300초 길이의 소스를 받으며, 모든 at 값은 클립 길이보다 작아야 합니다.
  • POST /v1/audio-detach는 클립의 오디오를 Timeline의 audio.url이 요구하는 파일인 wav로 반환합니다. 현재 컴파일러에서 렌더의 소리는 스파인과 선택 사항인 사운드트랙에서만 나오고 클립에서는 나오지 않으므로, 오디오를 분리해야 클립의 소리가 유지됩니다.
  • POST /v1/timeline-1.0/render는 wav를 스파인으로 삼고 슬롯 세 개를 받습니다. 그 프레임까지의 클립, 스틸(스틸은 정지 화면으로 유지됨), 그리고 더 뒤의 source_in부터 다시 이어지는 클립입니다. 기본 출력은 1080×1920이므로 output을 클립 크기에 맞추세요.
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: freeze-mid-001" \
  -d '{
    "audio": { "url": "https://media.sume.com/artifacts/artf_demo/clip.wav", "duration_seconds": 20 },
    "output": { "width": 1920, "height": 1080 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4", "start": 0, "duration": 8 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/frame-8s.png", "start": 8, "duration": 3 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4", "start": 11, "duration": 9, "source_in": 11 }
    ]
  }'

정지 화면 동안 소리는 어떻게 되나요?

소리는 계속 재생됩니다. 스파인은 끊김 없이 이어지고 audio.parts[] 조각들도 이음새에 무음 없이 이어지므로, 스틸이 떠 있는 동안에도 소리가 계속됩니다. 그래서 마지막 슬롯은 8이 아니라 source_in: 11에서 다시 시작합니다. 정지 화면이 클립의 삼 초 분량을 가리고, 그 뒤 화면과 소리가 다시 싱크가 맞은 상태로 이어집니다.

클립의 소리가 중요하지 않다면 대신 audio.mode: "silence"로 렌더링하세요. 출력에 duration_seconds 길이의 무음 트랙이 들어갑니다. 이때는 정지 화면으로 길이를 늘릴 수 있습니다. source_in: 8에서 다시 시작하고 duration_seconds를 23으로 설정하세요. 배경 음악 넣기처럼 soundtrack으로 편집본 전체에 음악을 깔 수도 있습니다.

더 긴 편집본 안에서 마지막 프레임을 유지하려면 어떻게 하나요?

클립의 Timeline 슬롯을 클립보다 길게 만드세요. Sume API 레퍼런스에 따르면 소스보다 긴 슬롯을 어떻게 채울지는 render.pad_mode가 정합니다. freeze는 마지막 프레임을 유지하고, loop는 소스를 다시 재생합니다. 기본값인 auto는 긴 정지 화면을 두는 대신 짧은 소스를 루프하므로, 슬롯이 정지된 프레임으로 끝나야 한다면 "render": { "pad_mode": "freeze" }를 보내세요. 문서는 짧은 소스를 채우거나 루프한 경우를 실패가 아니라 소프트 경고로 다룹니다. 의도적으로 루프하는 방법은 루프로 영상 길이 늘리기에서 다룹니다.

각 단계의 비용은 얼마이고, 한도는 어떻게 되나요?

영상 프레임은 과금되지 않습니다. 나머지 단계는 각각 따로 과금되며, 기본적으로 5.5% 에이전트 수수료가 더해집니다.

영상 필터, 영상 프레임, 오디오 분리, Timeline 1.0, API 요금 기준, 2026-09-27 확인.
단계호출과금한도
마지막 프레임 정지POST /v1/video-filter인코딩 Job당, 요율은 GET /v1/catalog에 표시; 검사는 무료소스 ≤ 300초
프레임 스틸POST /v1/video-frames과금 없음소스 ≤ 300초; 각 at은 [0, duration) 안
클립 오디오POST /v1/audio-detachJob당, 요율은 GET /v1/catalog에 표시소스 ≤ 1,800초; 출력 ≤ 900초
렌더POST /v1/timeline-1.0/render출력 분당 $0.10 기준으로 예약, 예약액을 넘는 청구 없음출력 1–1,800초; 슬롯 1–200개, 각 ≥ 0.2초

출처

관련 글

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

미디어 도구 글 전체 보기

작성자 Sume