Skip to content

API 参考

所有方法均从 cut_cli 包导出,返回 Promise。

typescript
import {
  createDraft, getDraftInfo, easyCreateMaterial,
  addCaptions, getCaptions,
  addImages, getImages,
  addVideos, getVideos,
  addAudios, getAudios,
  addEffects, getEffects,
  addSticker, getStickers,
  addKeyframes, getKeyframes,
  addMasks, getMasks,
  addTextStyle,
  getAudioDuration, getImageAnimations,
  registerDraftUrl,
} from 'cut_cli';

时间单位:所有时间参数使用微秒(μs),1秒 = 1,000,000


草稿管理

createDraft(params?)

创建新的剪映草稿。会在 draftsDir 下创建一个完整的剪映标准草稿文件夹,包含模板文件和 resources/ 媒体目录,可直接被剪映桌面端打开。

参数 CreateDraftInput

字段类型必填默认值说明
widthnumber1080画布宽度(像素)
heightnumber1920画布高度(像素)

返回 Promise<CreateDraftOutput>

字段类型说明
draftIdstring草稿唯一标识
filePathstring草稿文件夹路径

示例

typescript
const draft = await createDraft({ width: 1080, height: 1920 });
console.log(draft.draftId);  // "a1b2c3d4-..."
console.log(draft.filePath); // "~/Movies/JianyingPro Drafts/a1b2c3d4-.../"

getDraftInfo(params)

获取草稿的基本信息。

参数 { draftId: string }

字段类型必填说明
draftIdstring草稿 ID

返回 Promise<DraftInfo>

字段类型说明
draftIdstring草稿 ID
canvasWidthnumber画布宽度
canvasHeightnumber画布高度
durationnumber总时长(μs)
fpsnumber帧率
trackSummary{ id, type, segmentCount }[]轨道摘要
materialSummaryobject素材统计(videos/audios/texts/stickers/effects)

示例

typescript
const info = await getDraftInfo({ draftId: 'abc123' });
console.log(`时长: ${info.duration / 1000000}秒`);

easyCreateMaterial(params)

按音频时长自动铺设素材,将图片/视频/文字铺满整个音频时长。传入的媒体 URL 会自动下载到草稿的 resources/ 目录。

参数 EasyCreateMaterialInput

字段类型必填说明
draftIdstring草稿 ID
audioUrlstring音频 URL(自动下载)
imgUrlstring图片 URL(自动下载)
videoUrlstring视频 URL(自动下载)
textstring文字内容
textColorstring文字颜色
fontSizenumber字号
textTransformYnumber文字 Y 轴偏移

返回 Promise<EasyCreateMaterialOutput>

字段类型说明
draftIdstring草稿 ID
messagestring操作结果信息

示例

typescript
await easyCreateMaterial({
  draftId: 'abc123',
  audioUrl: 'https://example.com/audio.mp3',
  imgUrl: 'https://example.com/bg.jpg',
  text: '欢迎观看',
});

字幕

addCaptions(params)

向草稿批量添加字幕。

参数 AddCaptionsInput

字段类型必填说明
draftIdstring草稿 ID
captionsCaptionItem[] | string字幕数组或 JSON 字符串
fontstring字体名称
alignmentnumber对齐方式
alphanumber透明度(0-1)
textColorstring文字颜色
fontSizenumber字号
boldboolean加粗
italicboolean斜体
underlineboolean下划线
textEffectstring文字特效
letterSpacingnumber字间距
lineSpacingnumber行间距
borderColorstring描边颜色
styleTextboolean是否应用样式
hasShadowboolean是否有阴影
shadowInfoobject阴影配置(见下方)
scaleXnumberX 轴缩放
scaleYnumberY 轴缩放
transformXnumberX 轴位移
transformYnumberY 轴位移

shadowInfo 对象:

字段类型说明
shadowColorstring阴影颜色
shadowAlphanumber阴影透明度
shadowDiffusenumber阴影扩散
shadowDistancenumber阴影距离
shadowAnglenumber阴影角度

CaptionItem 对象:

字段类型必填说明
textstring字幕文本
startnumber开始时间(μs)
endnumber结束时间(μs)
keywordstring关键词高亮文本
keywordColorstring关键词颜色
fontSizenumber单条字号
keywordFontSizenumber关键词字号
inAnimationstring入场动画名
outAnimationstring出场动画名
loopAnimationstring循环动画名
inAnimationDurationnumber入场动画时长(μs)
outAnimationDurationnumber出场动画时长(μs)
loopAnimationDurationnumber循环动画时长(μs)

返回 Promise<AddCaptionsOutput>

字段类型说明
draftIdstring草稿 ID
trackIdstring轨道 ID
textIdsstring[]文本素材 ID 列表
segmentIdsstring[]片段 ID 列表
segmentInfosSegmentInfo[]片段详情(id/start/end)

示例

typescript
const result = await addCaptions({
  draftId: 'abc123',
  captions: [
    { text: '第一句话', start: 0, end: 3000000 },
    { text: '第二句话', start: 3000000, end: 6000000 },
  ],
  fontSize: 8,
  textColor: '#FFFFFF',
  bold: true,
});

getCaptions(params)

获取草稿中的所有字幕。

参数 { draftId: string }

返回 Promise<CaptionInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
textstring字幕文本
startnumber开始时间(μs)
durationnumber持续时间(μs)
materialIdstring素材 ID

图片

addImages(params)

向草稿添加图片素材。传入的图片 URL 会自动下载到草稿的 resources/ 目录,工程 JSON 中使用本地路径引用。

参数 AddImagesInput

字段类型必填说明
draftIdstring草稿 ID
imageInfosImageItem[] | string图片数组或 JSON 字符串
alphanumber透明度(0-1)
scaleXnumberX 轴缩放
scaleYnumberY 轴缩放
transformXnumberX 轴位移
transformYnumberY 轴位移

ImageItem 对象:

字段类型必填说明
imageUrlstring图片 URL(自动下载到本地)
widthnumber宽度(像素)
heightnumber高度(像素)
startnumber开始时间(μs)
endnumber结束时间(μs)
inAnimationstring入场动画名
outAnimationstring出场动画名
loopAnimationstring循环动画名
inAnimationDurationnumber入场动画时长(μs)
outAnimationDurationnumber出场动画时长(μs)
loopAnimationDurationnumber循环动画时长(μs)
transitionstring转场效果名
transitionDurationnumber转场时长(μs)

返回 Promise<AddImagesOutput>

字段类型说明
draftIdstring草稿 ID
trackIdstring轨道 ID
imageIdsstring[]图片素材 ID 列表
segmentIdsstring[]片段 ID 列表
segmentInfosSegmentInfo[]片段详情

示例

typescript
const result = await addImages({
  draftId: 'abc123',
  imageInfos: [
    { imageUrl: 'https://example.com/1.jpg', width: 1920, height: 1080, start: 0, end: 5000000 },
    { imageUrl: 'https://example.com/2.jpg', width: 1920, height: 1080, start: 5000000, end: 10000000 },
  ],
});

getImages(params)

获取草稿中的所有图片素材。

参数 { draftId: string }

返回 Promise<ImageInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
materialUrlstring素材本地路径(占位符格式)
widthnumber宽度
heightnumber高度
startnumber开始时间(μs)
durationnumber持续时间(μs)
materialIdstring素材 ID

视频

addVideos(params)

向草稿添加视频素材,支持变速和曲线变速。传入的视频 URL 会自动下载到草稿的 resources/ 目录。

参数 AddVideosInput

字段类型必填说明
draftIdstring草稿 ID
videoInfosVideoItem[] | string视频数组或 JSON 字符串
alphanumber透明度(0-1)
scaleXnumberX 轴缩放
scaleYnumberY 轴缩放
transformXnumberX 轴位移
transformYnumberY 轴位移
sceneTimelinesSceneTimeline[]场景时间线(变速/曲线变速)

VideoItem 对象:

字段类型必填说明
videoUrlstring视频 URL(自动下载到本地)
widthnumber宽度(像素)
heightnumber高度(像素)
durationnumber视频原始时长(μs)
startnumber在时间线的开始时间(μs)
endnumber在时间线的结束时间(μs)
maskstring遮罩
transitionstring转场效果名
transitionDurationnumber转场时长(μs)
volumenumber音量

SceneTimeline 对象:

字段类型必填说明
startnumber开始时间(μs)
endnumber结束时间(μs)
curveSpeedstring曲线变速配置

返回 Promise<AddVideosOutput>

字段类型说明
draftIdstring草稿 ID
trackIdstring轨道 ID
videoIdsstring[]视频素材 ID 列表
segmentIdsstring[]片段 ID 列表

示例

typescript
const result = await addVideos({
  draftId: 'abc123',
  videoInfos: [
    {
      videoUrl: 'https://example.com/video.mp4',
      width: 1920, height: 1080,
      duration: 10000000,
      start: 0, end: 10000000,
    },
  ],
});

getVideos(params)

获取草稿中的所有视频片段(不含图片类型)。

参数 { draftId: string }

返回 Promise<VideoInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
materialUrlstring素材本地路径(占位符格式)
widthnumber宽度
heightnumber高度
startnumber开始时间(μs)
durationnumber持续时间(μs)
materialIdstring素材 ID

音频

addAudios(params)

向草稿添加音频素材。传入的音频 URL 会自动下载到草稿的 resources/ 目录。

参数 AddAudiosInput

字段类型必填说明
draftIdstring草稿 ID
audioInfosAudioItem[] | string音频数组或 JSON 字符串

AudioItem 对象:

字段类型必填说明
audioUrlstring音频 URL(自动下载到本地)
durationnumber音频时长(μs)
startnumber开始时间(μs)
endnumber结束时间(μs)
audioEffectstring音效名称
volumenumber音量

返回 Promise<AddAudiosOutput>

字段类型说明
draftIdstring草稿 ID
trackIdstring轨道 ID
audioIdsstring[]音频素材 ID 列表

示例

typescript
const result = await addAudios({
  draftId: 'abc123',
  audioInfos: [
    {
      audioUrl: 'https://example.com/bgm.mp3',
      duration: 60000000,
      start: 0,
      end: 60000000,
      volume: 0.8,
    },
  ],
});

getAudios(params)

获取草稿中的所有音频片段。

参数 { draftId: string }

返回 Promise<AudioInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
materialUrlstring素材本地路径(占位符格式)
startnumber开始时间(μs)
durationnumber持续时间(μs)
volumenumber音量
materialIdstring素材 ID

特效

addEffects(params)

向草稿添加视频特效。

参数 AddEffectsInput

字段类型必填说明
draftIdstring草稿 ID
effectInfosEffectItem[] | string特效数组或 JSON 字符串

EffectItem 对象:

字段类型必填说明
effectTitlestring特效名称
startnumber开始时间(μs)
endnumber结束时间(μs)

返回 Promise<AddEffectsOutput>

字段类型说明
draftIdstring草稿 ID
trackIdstring轨道 ID
effectIdsstring[]特效素材 ID 列表
segmentIdsstring[]片段 ID 列表

示例

typescript
const result = await addEffects({
  draftId: 'abc123',
  effectInfos: [
    { effectTitle: '模糊', start: 0, end: 3000000 },
  ],
});

getEffects(params)

获取草稿中的所有特效。

参数 { draftId: string }

返回 Promise<EffectInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
startnumber开始时间(μs)
durationnumber持续时间(μs)
materialIdstring素材 ID

贴纸

addSticker(params)

向草稿添加贴纸。

参数 AddStickerInput

字段类型必填说明
draftIdstring草稿 ID
stickerIdstring贴纸资源 ID
startnumber开始时间(μs)
endnumber结束时间(μs)
scalenumber缩放比例
transformXnumberX 轴位移
transformYnumberY 轴位移

返回 Promise<AddStickerOutput>

字段类型说明
draftIdstring草稿 ID

示例

typescript
await addSticker({
  draftId: 'abc123',
  stickerId: 'sticker_001',
  start: 0,
  end: 5000000,
  scale: 1.5,
});

getStickers(params)

获取草稿中的所有贴纸。

参数 { draftId: string }

返回 Promise<StickerInfo[]>

字段类型说明
segmentIdstring片段 ID
trackIdstring轨道 ID
startnumber开始时间(μs)
durationnumber持续时间(μs)
materialIdstring素材 ID

关键帧

addKeyframes(params)

为草稿中的片段添加关键帧动画。

参数 AddKeyframesInput

字段类型必填说明
draftIdstring草稿 ID
keyframesKeyframeItem[] | string关键帧数组或 JSON 字符串

KeyframeItem 对象:

字段类型必填说明
segmentIdstring所属片段 ID
propertystring属性名(如 scale_xposition_x
offsetnumber在片段内的时间偏移(μs)
valuenumber属性值

返回 Promise<AddKeyframesOutput>

字段类型说明
draftIdstring草稿 ID

示例

typescript
await addKeyframes({
  draftId: 'abc123',
  keyframes: [
    { segmentId: 'seg_001', property: 'scale_x', offset: 0, value: 1.0 },
    { segmentId: 'seg_001', property: 'scale_x', offset: 3000000, value: 1.5 },
  ],
});

getKeyframes(params)

获取指定片段的关键帧列表。

参数 { draftId: string; segmentId: string }

字段类型必填说明
draftIdstring草稿 ID
segmentIdstring片段 ID

返回 Promise<KeyframeInfo[]>

字段类型说明
propertystring属性名
timeOffsetnumber时间偏移(μs)
valuenumber属性值

遮罩

addMasks(params)

为草稿中的多个片段批量添加遮罩。

参数 AddMasksInput

字段类型必填默认值说明
draftIdstring草稿 ID
segmentIdsstring[]目标片段 ID 列表
namestring线性遮罩类型名称
Xnumber中心 X 坐标
Ynumber中心 Y 坐标
widthnumber宽度
heightnumber高度
feathernumber羽化值
rotationnumber旋转角度
invertboolean反转遮罩
roundCornernumber圆角

返回 Promise<AddMasksOutput>

字段类型说明
draftIdstring草稿 ID

示例

typescript
await addMasks({
  draftId: 'abc123',
  segmentIds: ['seg_001', 'seg_002'],
  name: '线性',
  feather: 0.5,
  rotation: 45,
});

getMasks(params)

获取草稿中的遮罩信息。

参数 { draftId: string; segmentId?: string }

字段类型必填说明
draftIdstring草稿 ID
segmentIdstring过滤指定片段

返回 Promise<MaskInfo[]>

字段类型说明
idstring遮罩 ID
namestring遮罩类型名称
resourceTypestring资源类型
configobject遮罩配置
config.centerXnumber中心 X
config.centerYnumber中心 Y
config.widthnumber宽度
config.heightnumber高度
config.feathernumber羽化
config.rotationnumber旋转
config.invertboolean是否反转
config.roundCornernumber圆角

文字样式

addTextStyle(params)

生成文字样式 JSON(不写入草稿),可用于关键词高亮等场景。

参数 AddTextStyleInput

字段类型必填说明
textstring文字内容
keywordstring关键词(多个用 | 分隔)
keywordColorstring关键词颜色
fontSizenumber默认字号
keywordFontSizenumber关键词字号

返回 Promise<AddTextStyleOutput>

字段类型说明
textStylestring生成的样式 JSON 字符串

示例

typescript
const { textStyle } = await addTextStyle({
  text: '欢迎来到我的世界',
  keyword: '世界',
  keywordColor: '#FF0000',
  keywordFontSize: 12,
});

工具查询

getAudioDuration(params)

获取远程音频文件的时长。

参数 GetAudioDurationInput

字段类型必填说明
urlstring音频文件 URL

返回 Promise<GetAudioDurationOutput>

字段类型说明
messagestring状态信息
durationnumber音频时长(μs)

示例

typescript
const { duration } = await getAudioDuration({ url: 'https://example.com/audio.mp3' });
console.log(`时长: ${duration / 1000000}秒`);

getImageAnimations(params?)

获取可用的图片动画效果列表。

参数 GetImageAnimationsInput(可选)

字段类型必填默认值说明
modenumber0模式
type'in' | 'out' | 'loop''in'动画类型

返回 Promise<GetImageAnimationsOutput>

字段类型说明
effectsany[]动画效果列表

示例

typescript
const { effects } = await getImageAnimations({ type: 'in' });
console.log(`共 ${effects.length} 个入场动画`);

工具函数

registerDraftUrl(draftId, ossUrl)

手动注册草稿 ID 与 OSS URL 的映射关系,之后可用短 draftId 加载草稿。

参数

字段类型必填说明
draftIdstring草稿 ID
ossUrlstringOSS 存储地址

返回 void

示例

typescript
registerDraftUrl('abc123', 'https://oss.example.com/draft/abc123/draft_content.json');

类型导出

所有 TypeScript 类型接口均从包中导出,可直接引用:

typescript
import type {
  CreateDraftInput, CreateDraftOutput, DraftInfo,
  EasyCreateMaterialInput, EasyCreateMaterialOutput,
  CaptionItem, AddCaptionsInput, AddCaptionsOutput, CaptionInfo,
  ImageItem, AddImagesInput, AddImagesOutput, ImageInfo,
  VideoItem, SceneTimeline, AddVideosInput, AddVideosOutput, VideoInfo,
  AudioItem, AddAudiosInput, AddAudiosOutput, AudioInfo,
  EffectItem, AddEffectsInput, AddEffectsOutput, EffectInfo,
  AddStickerInput, AddStickerOutput, StickerInfo,
  KeyframeItem, AddKeyframesInput, AddKeyframesOutput, KeyframeInfo,
  AddMasksInput, AddMasksOutput, MaskInfo,
  AddTextStyleInput, AddTextStyleOutput,
  GetAudioDurationInput, GetAudioDurationOutput,
  GetImageAnimationsInput, GetImageAnimationsOutput,
  SegmentInfo,
} from 'cut_cli';