J컷과 L컷이란? 차이와 만드는 방법

J컷은 다음 샷의 소리를 그 화면보다 먼저 들려주고, L컷은 한 샷의 소리를 다음 화면 아래로 계속 이어 갑니다. 각각 만드는 방법을 알아봅니다.

읽는 시간 5분Sume
전체 글

J컷과 L컷은 소리와 화면이 서로 다른 순간에 바뀌는 스플릿 편집(split edit)입니다. J컷에서는 다음 샷의 소리가 그 화면보다 먼저 시작되므로, 새 장면이 먼저 들립니다. L컷에서는 화면이 다음 샷으로 넘어가는 동안 앞 샷의 소리가 계속 재생됩니다. J와 L이라는 글자는 편집 타임라인에서 오디오 트랙과 영상 트랙이 이루는 모양을 나타냅니다.

아래 Sume 관련 내용은 2026-09-28에 확인한 Timeline 1.0과 오디오 분리 문서, Sume API 레퍼런스를 바탕으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.

J컷과 L컷은 무엇이 다른가요?

둘 다 소리와 화면이 함께 바뀌는 스트레이트 컷에서 시작합니다. 여기서 소리의 컷 지점을 화면의 컷 지점에서 한두 초 떨어지게 옮깁니다. 둘의 차이는 옮기는 방향뿐입니다.

  • J컷: 소리의 컷이 먼저 옵니다. 다음 샷의 소리가 현재 화면 아래에서 시작되고, 화면이 뒤따라 바뀝니다. 인터뷰라면 인터뷰어가 아직 화면에 있는 동안 답변이 시작됩니다.
  • L컷: 화면의 컷이 먼저 옵니다. 현재 샷의 소리가 다음 화면 아래로 이어지므로, 시청자가 듣는 사람이나 설명하는 대상을 보는 동안 화자가 문장을 끝맺을 수 있습니다.

Sume로 J컷이나 L컷을 어떻게 만드나요?

Sume의 Timeline 1.0 렌더는 소리와 화면을 따로 다루며, 스플릿 편집에 필요한 것이 바로 이 점입니다. 화면은 video[] 슬롯의 목록이고, 화면의 컷은 슬롯의 start에서 일어납니다. 소리는 오디오 스파인 하나이며, 최대 20개의 audio.parts[]로 만들 수 있습니다. part는 오디오 파일의 조각으로, 각각 url, source_in(그 파일 안의 인포인트), duration이 있고 끝과 끝이 이어집니다. 소리의 컷은 한 part가 끝나고 다음 part가 시작되는 곳에서 일어납니다.

  • 두 클립 모두 앞서 실행한 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 파일이어야 합니다. Sume에는 컴퓨터에 있는 파일을 올리는 공개 업로드 경로가 없습니다(엔드포인트별로 받는 URL).
  • POST /v1/audio-detach로 각 클립의 소리를 분리하세요. 기본 출력은 스파인이 요구하는 형식인, 샘플 단위로 정확한 WAV입니다. 렌더는 소리를 스파인과 선택 사항인 사운드트랙에서만 가져오며, 현재 코드에서는 각 클립 자체의 오디오가 빠집니다.
  • 클립마다 슬롯 하나와 part 하나를 주세요. 샷 B의 싱크를 유지하세요. 샷 B part의 source_in은 J컷이면 슬롯의 source_in에서 소리가 앞서는 시간을 뺀 값이고, L컷이면 소리가 늦는 시간을 더한 값입니다.
  • L컷에서는 샷 A의 파일이 화면에 보이는 마지막 프레임 이후로도 이어져야 하고, J컷에서는 샷 B의 파일에 슬롯의 source_in보다 앞선 소리가 있어야 합니다.
샷 A와 B는 화면에 각각 6초씩 나오고, 샷 B의 슬롯은 start 6, source_in 2이며, 스플릿 길이는 1.5초입니다. 필드는 Timeline 1.0 기준이며 2026-09-28에 확인했습니다.
필드스트레이트 컷J컷L컷
샷 A part의 duration64.57.5
샷 B part의 source_in20.53.5
샷 B part의 duration67.54.5
소리의 컷 위치6초4.5초7.5초
화면의 컷 위치6초6초6초
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: interview-j-cut-001" \
  -d '{
    "audio": {
      "duration_seconds": 12,
      "parts": [
        { "url": "https://media.sume.com/artifacts/artf_demo/a.wav", "source_in": 0, "duration": 4.5 },
        { "url": "https://media.sume.com/artifacts/artf_demo/b.wav", "source_in": 0.5, "duration": 7.5 }
      ]
    },
    "output": { "width": 1920, "height": 1080 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 6 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 6, "duration": 6, "source_in": 2 }
    ]
  }'

소리에서는 어떤 문제가 생길 수 있나요?

스플릿은 오디오 part가 만들기 때문에, 렌더가 거부되거나 소리가 이상하게 들리는 곳도 part입니다. 이어지는 목소리 하나 위로 B-roll 컷어웨이를 넣는 것은 더 단순한 경우이며, 토킹 헤드 영상에 B-roll 넣기에서 다룹니다.

  • part 길이의 합은 audio.duration_seconds 이상이어야 합니다. 그렇지 않으면 렌더가 audio_parts_shorter_than_duration으로 거부됩니다.
  • part는 샘플 도메인에서 이어지며 이음매에 무음이 들어가지 않으므로, 소리의 컷은 단어 중간이 아니라 쉼에 두세요.
  • 현재 코드에서 렌더는 채널 수가 서로 다른 part를 거부합니다(audio_parts_channel_mismatch). 한 클립이 모노라면 두 클립 모두 channels: "mono"로 분리하세요.
  • 오디오 트랙이 없는 클립은 분리 단계에서 detach_source_has_no_audio로 실패합니다.
  • 렌더 한 번에는 part를 최대 20개까지 넣을 수 있습니다. 더 필요하면 API로 영상 일부 잘라내기에서 보여 주듯 오디오를 먼저 이어 붙이세요.
  • 기본 출력은 1080×1920(세로)입니다. 가로 편집본이라면 예제처럼 output.width와 output.height를 지정하세요.

스플릿 편집에는 비용이 얼마나 드나요?

오디오 분리는 Job당 $0.01, 렌더는 출력 분당 $0.10이며, 기본적으로 5.5% 에이전트 수수료가 더해집니다. 렌더는 ceil(audio.duration_seconds / 60)분을 예약하므로, 12초짜리 예제는 일 분을 예약합니다. 비용을 내기 전에 과금되지 않는 POST /v1/timeline-1.0/plan으로 타임라인 문서를 검사할 수 있습니다. 렌더링 전에 타임라인 검증하기를 참고하세요.

출처

관련 글

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

미디어 도구 글 전체 보기

작성자 Sume