비디오 트림
이 문서는 영문 원고를 AI로 번역한 내용이라 표현이 어색할 수 있습니다.
현재 SoT. Media L2 구간 컷(
sume/video-trim-1.0, #5953). dest와 prod. 클립 검사가 아닙니다 — 검사는 비디오 검사입니다. 조립이 아닙니다 — 시퀀스, 트랜지션, 오디오 스파인은 Timeline 1.0에 남습니다.
Video trim 1.0은 워크스페이스의 하나의 media.sume.com 클립과
구간을 받아 [start, end)만 담은 새 MP4 아티팩트를 반환합니다.
소스는 건드리지 않습니다. 서버가 워커 미디어 런타임에서 ffmpeg를
컴파일합니다(apps/api/src/routes.ts createVideoTrimV1 /
submitSumeVideoTrimJob).
GET /v1/video-trim/:id는 없습니다. Job 봉투로 폴링하세요:
호스티드 MCP: video_trim(packages/mcp-server/src/mcp.ts). 쓰기는
idempotency_key가 필요합니다(OAuth에서는 mcp:write). 흐름:
video_trim → jobs_wait → jobs_result.
트림 만들기
필수: video_url(이 워크스페이스의 media.sume.com 아티팩트 또는
에셋), start(초, ≥ 0), 그리고 end 또는 duration 정확히 하나.
공개 인터넷 fetch는 없습니다. 먼저 가져오세요
(POST /v1/media-imports). Idempotency-Key는 필수입니다.
선택: precision, audio, output(exact만), 평소의 mode /
webhook_url / wait_timeout_seconds 통신 필드입니다.
기본 mode는 **async**입니다(readCommunicationOptions). mode: "sync"를 주면 최대 30초 기다리고 끝난 Job을 200으로 주거나,
202로 폴링합니다.
성공한 submit은 Job을 반환합니다(request_id가 Job id). result_ready이면
GET /v1/jobs/:id/result는 kind: video_trim이고 video_url(새
artf_, 소스가 아님), duration_seconds, actual_start_seconds,
precision, audio, output, 선택적 warnings[]를 담습니다. 그
MP4를 timeline_create video[]에 source_in 0으로 넣으세요.
공개 요금: Job당 $0.02(VIDEO_TRIM_PUBLIC_PRICING; 라이브는
GET /v1/catalog). 프로바이더 추론 없음 — 워커 ffmpeg만.
프로그램
| 필드 | 효과 |
|---|---|
start | 인포인트, 소스 시작부터 초. 필수. |
end | 아웃포인트, 초. end / duration 정확히 하나. 소스를 넘으면 클램프하고 결과에 trim_clamped_to_source 경고. |
duration | 컷 길이, 초. 0.2–900. end / duration 정확히 하나. |
precision | exact(기본): 프레임 정확 재인코딩(libx264, yuv420p). keyframe: 스트림 카피. GOP 앞에서 시작할 수 있으니 actual_start_seconds로 다시 잡으세요. |
audio | keep(기본) 또는 drop. exact는 유지 오디오를 AAC로 리먹스합니다. |
output | 나가는 길에 선택적 { width, height, fps } 컨폼. exact만. width/height 256–2160; fps 24 | 25 | 30 | 60. 생략하면 소스를 상속합니다. |
상한(packages/api-contract/src/index.ts): 소스 ≤ 1800초; 출력 ≤
900초; 출력 ≥ 0.2초.
거절(안정 코드)
| 코드 | 언제 |
|---|---|
video_trim_range_required | end도 duration도 없음. |
video_trim_range_conflict | end와 duration 둘 다. |
video_trim_range_empty | end ≤ start, 또는 구간이 900초보다 김. |
video_trim_output_requires_exact | output과 precision: "keyframe". |
ffmpeg_fields_rejected | 클라이언트가 vf / filter / ffmpeg / cmd / codec / crf 등을 보냄. 서버가 ffmpeg를 컴파일합니다. |
unsupported_media_source | video_url이 Sume 미디어 호스트가 아님. |
source_not_found | 죽은 또는 다른 워크스페이스 media.sume.com URL. |
unsupported_media_type | HEAD가 비디오가 아님. |
source_duration_exceeded | 소스가 1800초보다 김(워커). |
호스트 밖 URL(https://example.com/…)은 접수에서 거절됩니다. 먼저
가져오세요.
이 표면이 아닌 것
| 필요한 일 | 쓸 것 |
|---|---|
| 프로브 / 스틸 / 선택적 STT | 비디오 검사 |
| 오디오 트랙을 내구성 wav / mp3로 | 오디오 분리 |
| 여러 클립 시퀀스 | Timeline 1.0 |
| 픽셀 패스(dim / crop) | 비디오 필터 |
t의 소스 크기 프레임 | 비디오 프레임 |

