Skip to content

生成Jianying 草稿,并通过云端并发渲染导出视频的工具集。A toolkit for generating Jianying (CapCut China) draft files and exporting videos via cloud rendering without installing the Jianying client.

License

Notifications You must be signed in to change notification settings

HTWMedia/JyDraft

Repository files navigation

English | 中文

JyDraft

JyDraft 是一个用于 生成Jianying草稿(Draft)并基于草稿直接渲染导出视频 的工具集。 支持通过代码生成草稿文件,并使用独立工具在 无需安装剪映客户端 的情况下,将草稿及素材进行云端渲染并导出视频。

👉 可在右侧 Releases 页面下载已编译好的导出工具。


✨ 功能特性

  • 使用 C# 代码生成草稿(draft_content.json
  • 支持音频、视频、GIF、文本轨道与片段
  • 支持转场、动画、字幕气泡、背景填充等效果
  • ✅ 支持 加密草稿自动解密
  • 支持 多草稿并发导出
  • 无需安装剪映客户端
  • 云端渲染,对本地机器性能要求低

📦 使用说明

一、生成剪映草稿

下面示例展示了如何通过代码生成一个完整的草稿,并最终导出为 JSON 字符串。

1️⃣ 创建草稿文件

var script = new ScriptFile(1920, 1080);
script.Content["id"] = draftId;

// 添加轨道
script
    .AddTrack(TrackTypeName.audio)
    .AddTrack(TrackTypeName.video)
    .AddTrack(TrackTypeName.text);

2️⃣ 准备素材

var assetDir = @"D:\pyJianYingDraft\readme_assets\tutorial";

var audioPath = Path.Combine(assetDir, "audio.mp3");
var audioMaterial = new AudioMaterial(audioPath);

var videoPath = Path.Combine(assetDir, "video.mp4");
var videoMaterial = new VideoMaterial(videoPath);

var gifPath = Path.Combine(assetDir, "sticker.gif");
var gifMaterial = new VideoMaterial(gifPath);

3️⃣ 创建片段并添加效果

var audioSegment = new AudioSegment(
    audioMaterial,
    TimeUtil.Trange(0, "5s"),
    volume: 0.6f
);
audioSegment.AddFade("1s", 0);

var videoSegment = new VideoSegment(
    videoMaterial,
    TimeUtil.Trange(0, "4.2s")
);
videoSegment.AddAnimation(IntroType.斜切);
videoSegment.AddTransition(TransitionType.信号故障);

var gifSegment = new VideoSegment(
    gifMaterial,
    TimeUtil.Trange(videoSegment.End, gifMaterial.Duration)
);
gifSegment.AddBackgroundFilling("blur", 0.0625);

4️⃣ 添加文本字幕

var textSegment = new TextSegment(
    "据说 JyDraft 效果还不错?",
    videoSegment.TargetTimerange,
    font: FontType.文轩体,
    style: new TextStyle(color: new[] { 1.0f, 1.0f, 0.0f }),
    clipSettings: new ClipSettings(transformY: -0.8f)
);

textSegment.AddAnimation(
    Text_outro.故障闪动,
    "out",
    duration: TimeUtil.Tim("1s")
);
textSegment.AddBubble("361595", "6742029398926430728");

5️⃣ 组装并导出草稿

script
    .AddSegment(audioSegment)
    .AddSegment(videoSegment)
    .AddSegment(gifSegment)
    .AddSegment(textSegment);

var json = script.Dumps();

二、草稿渲染与视频导出(HDraft API)

🚀 Draft-to-Video 自动渲染 API 服务

📌 简介

一个专业的 自动化视频渲染 API 服务, 支持通过 JSON 草稿文件媒体素材 自动合成并生成视频, 适用于批量生成、自动化流水线和系统集成。


🔑 身份验证(API Key)

1️⃣ 申请 API Key

POST https://htwmedia.dpdns.org/auth/[email protected]

请求头:

X-App-Source: HDraft

请将 email 替换为你真实的邮箱地址,用于接收 API Key。


2️⃣ API Key 使用方式

所有后续接口请求 必须在 Header 中携带:

X-API-KEY: <你的 API Key>

🔐 三、加密草稿解密接口

用于将 剪映 / CapCut 的加密草稿文件 解密为可读的 draft_content.json

接口地址

POST https://htwmedia.dpdns.org/home/DecryptDraft

请求方式

  • POST
  • Content-Type: multipart/form-data

请求参数

参数名 类型 必填 说明
jsonFile File 剪映 / CapCut 加密草稿 JSON 文件

⚠️ 注意:

  • 必须以文件上传形式提交
  • 不是 URL 参数
  • 不是 base64 字符串

返回示例

{
  "success": true,
  "msg": "decrypt success",
  "draft_content": "{...}"
}

Python 示例(解密草稿)

import requests

BASE_URL = "https://htwmedia.dpdns.org"
API_KEY = "your_api_key"

headers = {"X-API-KEY": API_KEY}

files = {"jsonFile": open("encrypted_draft.json", "rb")}

res = requests.post(
    f"{BASE_URL}/home/DecryptDraft",
    headers=headers,
    files=files
)

data = res.json()
if data["success"]:
    with open("draft_content.json", "w", encoding="utf-8") as f:
        f.write(data["draft_content"])

四、完整渲染流程示例(Python)

import requests, time

BASE_URL = "https://htwmedia.dpdns.org"
API_KEY = "your_api_key"

headers = {"X-API-KEY": API_KEY}

files = [
    ('jsonFile', open('draft.json','rb')),
    ('assets', open('video.mp4','rb'))
]

res = requests.post(
    f"{BASE_URL}/home/UploadDraftPackage",
    headers=headers,
    data={'title':'示例'},
    files=files
)

draft_id = res.json()['draftId']

task_id = requests.post(
    f"{BASE_URL}/home/startrender",
    params={'draftId': draft_id},
    headers=headers
).json()['taskId']

while True:
    status = requests.get(
        f"{BASE_URL}/home/getstatus",
        params={'taskId': task_id},
        headers=headers
    ).json()
    if status['status'] == 'completed':
        print("下载地址:", status['downloadUrl'])
        break
    time.sleep(5)

📡 接口总览

接口 方法 说明
/auth/applykey POST 申请 API Key
/home/DecryptDraft POST 解密加密草稿
/home/UploadDraftPackage POST 上传草稿与素材
/home/startrender POST 启动渲染
/home/getstatus GET 查询渲染进度

💬 讨论群 / 技术交流

如果你对以下内容感兴趣:

  • 剪映 / CapCut 草稿结构分析
  • 草稿加密 / 解密原理
  • 自动化渲染流程
  • JyDraft 的二次开发与扩展

欢迎扫码加入 技术讨论群 👇

JyDraft 技术讨论群二维码

本群仅用于 技术交流与经验分享, 请勿发布广告或无关内容。


❗ 常见错误码

错误码 说明
401 API Key 无效或缺失
400 参数错误
500 服务器内部错误

📄 License

仅用于学习与技术研究,请勿用于任何违反剪映 / CapCut 用户协议或相关法律法规的用途。

About

生成Jianying 草稿,并通过云端并发渲染导出视频的工具集。A toolkit for generating Jianying (CapCut China) draft files and exporting videos via cloud rendering without installing the Jianying client.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages