미디어 도구

이미지 슬라이드쇼 영상 API: 이미지와 음악으로 MP4 만들기

Timeline 1.0으로 Sume에 호스팅된 이미지를 슬라이드쇼 MP4로 만드세요. 스틸은 영상 슬롯으로, 길이는 무음 스파인으로, 음악은 루프되는 사운드트랙으로 지정합니다.

읽는 시간 5분Sume
전체 글

Sume API로 이미지 슬라이드쇼 영상을 만들려면 Sume에 호스팅된 스틸을 video[] 슬롯으로 넣은 Timeline 1.0 렌더(POST /v1/timeline-1.0/render)를 보내세요. 각 스틸은 슬롯의 duration 동안 화면에 머무릅니다. 음성 파일 없이 길이를 선언하려면 audio.mode: "silence"를 설정하고, 음악은 soundtrack으로 추가하세요.

아래 내용은 2026-09-26에 확인한 Timeline 1.0 문서와 Sume API 레퍼런스의 필드 설명을 기준으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다. 음성과 영상 클립이 들어가는 타임라인은 롱폼 영상을 조립하는 방법을 참고하세요.

이미지와 음악은 어디서 가져오나요?

모든 URL은 이미 워크스페이스에 있는 media.sume.com 아티팩트나 에셋이어야 합니다. 앞서 실행한 Sume Job의 출력이 그 예이며, 호스트 밖 URL은 unsupported_media_source로 거부됩니다. POST /v1/images로 생성한 이미지는 Sume에 호스팅된 media.sume.com URL로 돌아옵니다. 자세한 내용은 레퍼런스 이미지를 활용한 이미지 생성을 참고하세요.

음악으로는 Music Router (영문) 트랙을 쓸 수 있으며, 결과 아티팩트 중 type이 audio인 것에서 읽습니다.

슬라이드쇼 요청은 어떻게 만드나요?

사진마다 슬롯을 하나씩 주고, 슬롯의 duration을 그 사진이 화면에 머무는 시간으로 지정하세요. audio.duration_seconds(1–1800)는 전체 길이로 설정해 마지막 슬롯이 거기서 끝나게 합니다. API 레퍼런스는 BGM만 있는(음악만 있는) 슬라이드쇼를 만드는 방법으로 무음(silence)에 사운드트랙을 더하는 방식을 안내합니다.

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: timeline-slideshow-001" \
  -d '{
    "audio": { "mode": "silence", "duration_seconds": 12 },
    "soundtrack": {
      "url": "https://media.sume.com/artifacts/artf_demo/music.mp3",
      "gain_db": 0,
      "loop": true,
      "fade_out_seconds": 2
    },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/photo-1.png", "start": 0, "duration": 4, "fit": "blur" },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/photo-2.png", "start": 4, "duration": 4, "fit": "blur",
        "transition": { "type": "fade", "duration": 0.5 } },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/photo-3.png", "start": 8, "duration": 4, "fit": "blur",
        "transition": { "type": "fade", "duration": 0.5 } }
    ]
  }'

슬라이드쇼에는 어떤 필드가 중요한가요?

silence에서는 사운드트랙이 오디오 트랙 전체가 됩니다. 그래도 기본값은 여전히 −16 dB이므로, API 레퍼런스는 작게 깔려는 경우가 아니라면 gain_db를 0으로 설정하라고 안내합니다. 사진 사이의 크로스페이드와 와이프는 영상 트랜지션 가이드에서 설명한 대로 동작합니다.

Timeline 1.0과 Sume API 레퍼런스 기준 슬라이드쇼 필드, 2026-09-26 확인.
필드슬라이드쇼에서
audio.mode: "silence"음성 파일 없이 선언한 길이. url, parts, gain_db, source_in은 받지 않음.
soundtrack음악. gain_db(−60에서 12까지), 끝까지 반복하는 loop, 최대 10인 fade_out_seconds.
video[].duration각 사진이 화면에 머무는 시간. 최소 0.2초.
video[].fitcover(기본값), contain, stretch, blur 중 하나.
output.width / height기본값 1080×1920. 256에서 2160 사이의 짝수 정수.
output.fps스틸에는 프레임 레이트가 없으므로, 스틸만 있는 렌더는 24, 25, 30, 60 중 하나를 지정하지 않으면 30으로 렌더링됨.

사진에 줌이나 팬을 넣을 수 있나요?

아니요, 스틸은 정지 화면으로 유지됩니다. motion은 지원 중단되었습니다. Timeline은 미디어를 움직이게 만드는 대신 합치고 나누기 때문에, motion을 보내면 받기는 하지만 motion_ignored 경고와 함께 무시합니다. 현재 코드에서는 스틸에 지정한 source_in도 still_source_in_ignored와 함께 무시됩니다.

스틸은 슬롯 길이만큼 루프되므로, 현재 코드에서는 길이가 모자라는 일이 없고 사진으로 들어가는 트랜지션이 하드 컷으로 바뀌지도 않습니다. 실제 움직임이 필요하다면, Sume의 모델 문서 (영문)는 제품 모션을 이미지 생성 다음 영상 생성 순서로 만들도록 안내합니다. 이미지로 영상 만들기가 그 예이며, 이렇게 만든 클립은 다른 클립처럼 video[]에 넣으면 됩니다.

세로 사진과 가로 사진을 섞으려면 어떻게 하나요?

슬롯마다 fit을 지정하세요. 현재 코드에서 cover는 사진을 화면에 꽉 차게 스케일하고 넘치는 부분을 잘라 내며, contain은 사진 전체가 들어가게 맞추고 남는 곳을 검은색으로 채우고, stretch는 화면 비율을 유지하지 않고 프레임 크기에 정확히 맞춰 스케일합니다. API 레퍼런스에 따르면 blur는 화면 비율이 맞지 않을 때 검은 여백 대신 프레임을 흐리게 복사한 이미지로 빈 곳을 채웁니다.

슬라이드쇼 비용은 얼마이고, 한도는 어떻게 되나요?

API 요금에 나온 렌더의 공개 요율은 출력 분당 $0.10이며, 예약되는 분량은 ceil(audio.duration_seconds / 60)분입니다.

  • 렌더당 슬롯 1–200개, 슬롯마다 최소 0.2초, 출력 길이 1–1800초입니다.
  • duck_db에는 음성 스파인이 필요합니다. silence에서는 duck_requires_audio_spine으로 거부됩니다.
  • loop가 없으면 출력보다 짧은 사운드트랙은 중간에 멈추고, 렌더가 soundtrack_shorter_than_spine 경고를 냅니다.

출처

관련 글

작성자 Sume