동영상 편집 (weizhi:video)
범위
| 함 | 안 함 |
|---|---|
probe, 프레임/오디오 추출, exportVideo 내보내기 | webview_exec로 전체 mp4 디코딩 |
| v1 remux: 앞뒤 자르기, 페이드 없는 연결 | 데스크톱 트랜스코딩 지원 가짜 구현 (데스크톱에는 본 패키지 없음) |
시작 규칙
- 먼저
load_skill(video-edit) 로 본문을 읽습니다. exportVideo또는 복잡한 타임라인을 작성하기 전에find_caps를 한 번 호출합니다 (query에exportVideo weizhi:video또는 구체적인 능력 포함). 반환된 호출 예제를 따라 작성하고, 필드명을 추측하지 마십시오.- 스크립트는
jobs/*.js에 넣고,run_js의file로 실행합니다.timeout_ms를 늘릴 수 있습니다 (최대 600000). - 스크립트 내 API 오류 (예:
bad argument,unsupported) 발생 시find_caps로 시그니처를 다시 확인한 후 스크립트를 수정합니다.
경로 선택
| 작업 | API |
|---|---|
| 하나의 구간 자르기, 여러 구간 이어붙이기, 재인코딩 없음 | v1 exportVideo({ clips: [{ path, startMs?, endMs? }], output }) |
| 다중 트랙, 이미지 인트로, Ken Burns 효과, 크로스페이드 | v2 exportVideo({ width, height, tracks, output }) |
타임라인 v2 (핵심 사항)
- 인트로 / 이미지:
type: "image"트랙 사용,durationMs필수. - mp4 클립:
type: "video"트랙 사용,inMs/outMs사용; 이미지를 video 트랙에 넣지 마십시오. - 크로스페이드 (image 트랙만): 뒤 클립에
transition: { type: "crossfade", durationMs: D }를 작성하고,
startMs_다음 = startMs_이전 + durationMs_이전 - D(정확히 D 밀리초 겹침).crossfadeMs필드는 없습니다. - 같은 트랙에서
transition을 선언하지 않은 클립은 시간이 겹칠 수 없습니다;overlapping clips오류가 발생하면 위 식과transition을 확인하십시오. transition과 클립 자체의 opacity 키프레임을 동시에 사용할 수 없습니다.- 오디오 트랙:
type: "audio"로 별도 트랙을 사용합니다.
예제 (두 이미지 페이드 + 비디오 연결):
import { exportVideo } from "weizhi:video";
const D = 300;
await exportVideo({
width: 720,
height: 1280,
tracks: [
{
type: "image",
clips: [
{ src: "a.jpg", startMs: 0, durationMs: 1000 },
{
src: "b.jpg",
startMs: 1000 - D,
durationMs: 1000,
transition: { type: "crossfade", durationMs: D },
},
],
},
{
type: "video",
clips: [{ src: "clip.mp4", startMs: 1700, inMs: 0, outMs: 5000 }],
},
],
output: "out/final.mp4",
});
권장 워크플로우
probe로 원본 비디오의 길이와 해상도를 확인합니다.- 커버 프레임이 필요하면:
extractFrame/extractFrames사용 (find_caps참조). - 복잡한 프로젝트: 먼저 v1으로 중간 결과
part1.mp4,part2.mp4를 내보낸 후, v1 또는 v2로 연결합니다; 같은 트랙에 페이드 선언 없이 클립을 강제로 겹치지 마십시오. - 배경 음악: 별도의
audio트랙,outMs를 영상 전체 길이에 맞춥니다.
구성
- 하나의
jobs/render.js스크립트에서 직렬로 프로브, 내보내기, 검증을 수행합니다 (완성된 파일을 다시probe가능). - 외부에서 여러 도구를 사용하여 하나의 스크립트를 대체하지 마십시오.
사용자에게 설명하는 방법
완성된 파일 이름과 길이를 알려줍니다; [완성파일](out/xxx.mp4) 링크를 사용합니다. 기술 용어를 나열하지 마십시오.