欢迎访问 AI Skills Video ! 海量优质视频教程,助你提升技能。

技巧分享-针对视频剪辑软件-JSON草稿数据的恢复与保护

老张 2026年7月13日 9 次阅读
本文介绍针对常用视频剪辑软件草稿JSON文件的数据保护和恢复操作方案。以及应对在5.9版本编辑的草稿应为升级剪辑工具后造成无法正常读取的处理方案。

1. 介绍

近期进行了AI生成视频剪辑能力的开发,其中使用到了 pyJianYingDraft 这个项目,项目中有一个特殊的要求,必须使用 5.9 以下的剪辑工具才可以。

这样做就比较繁琐,需要找到对应的版本,另外不同操作系统下,互联网分享的版本也是查找比较困难。Windows 上 5.9 版本的软件还算好找,而 Mac OS 中的对应版本就比较难找。

结合使用情况,我来分享一下为什么必须使用 5.9 版本,以及新版本的内容出现了什么样的变动,我们应该如何应对。对于误操作升级了版本之后,打开文件再也无法处理的问题,进行分享。

1.1 为什么必须使用 5.9

  • 因为剪辑5.9以前的版本 draft_content.json 文件是一个纯文本JSON,没有经过加密处理,所以使用各种第三方库可以方便的进行解析、生成;

  • 剪辑6.0 以后,会对 draft_content.jsondraft_meta_info.json 进行加密处理,是一种特殊的Base64的字符串形式;

  • 网络分享的视频草稿大部分都是以5.9 以下可读JSON草稿的形式来分享的;

  • AI 剪辑工具/工作流等生成的都是可读JSON,便于大模型理解与修改。

1.2 draft_content.json 未加密格式


{
  "canvas_config": { "height": 1280, "ratio": "original", "width": 720 },
  "color_space": 0,
  "config": {
    // ...
  },
  "cover": {
    // ...
  },
  "create_time": 1648249190868,
  "duration": 12800000,
  "extra_info": null,
  "fps": 30.0,

  "id": "43E29F7E-C73C-4636-B2D1-0C1106DE124D_1659854689147",
  "keyframe_graph_list": [],
  "keyframes": {
    "adjusts": [],
    "audios": [],
    "effects": [],
    "filters": [],
    "handwrites": [],
    "stickers": [],
    "texts": [],
    "videos": []
  },
  "last_modified_platform": { // 设备信息
  },
  "materials": { // 核心素材库
    "ai_translates": [],
    "audio_balances": [],
    "audio_effects": [],
    "audio_fades": [
    ],
    "audio_track_indexes": [],
    "audios": [ // 音频/音乐/音效
    ],
    "beats": [ // 与音频相关

    ],
    "canvases": [ // 画布颜色相关
    ],
    "chromas": [], // 绿幕抠图
    "color_curves": [],
    "digital_humans": [],
    "drafts": [ // 内置复合片段
      {
        "category_id": "",
        "category_name": "",
        "combination_id": "",
        "draft": {
          // 模板套模板,通常是人名条,或者是常用组合,例如:土拨鼠大叫
          "update_time": 0,
          "version": 360000
        },
        "formula_id": "",
        "id": "QU452XDE-TXNL-4LYI-639Z-5PK8PZYYYSR8_material",
        "name": "",
        "precompile_combination": false,
        "type": "composition"
      }
    ],
    "effects": [ // 视频特效/滤镜/花字/。。。
      {
        "id": "A0361319-0DBE-4AA2-939B-C3FE6F00208E",
        // ...
        "type": "text_effect",
        "value": 0.0,
        "version": ""
      }
    ],
    "manual_deformations": [],
    "masks": [ // 蒙板 内容过多,省略
    ],
    "material_animations": [ // 动画,入场/出场/循环/字幕/组合动画
      {
        "animations": [], // 动画组合,部分动画会有互斥
        "id": "D7DPTZ3B-CR8F-IPL--HFYI-1LVRWBFIVWUL",
        "multi_language_current": "none",
        "type": "sticker_animation"
      }
    ],
    "material_colors": [],
    "multi_language_refs": [],
    "placeholders": [ // 条件模块,用于在 segment 引用,因为这个调节并不是 materials 的素材
      {
        "id": "7EC4BE6C-29FB-42d4-B3B4-8DD2C86E63CF",
        "material_resource_id": "",
        "name": "调节1",
        "type": "adjust"
      }
    ],
    "plugin_effects": [],
    "primary_color_wheels": [],
    "realtime_denoises": [

    ],
    "shapes": [],
    "smart_crops": [],
    "smart_relights": [],
    "sound_channel_mappings": [
    ],
    "speeds": [ // segment 速度信息,可以不设置,segment 内部自己设置也可以
      {
        "curve_speed": null,
        "id": "20N5HL6M-UPMS-XUDE-RXSC-65NQPGGX8DLG",
        "mode": 0,
        "speed": 1.0,
        "type": "speed"
      }
    ],
    "stickers": [],
    "tail_leaders": [],
    "text_templates": [ // 文字模板组合

    ],
    "texts": [ // 文字信息
      {
        // ...
        "content": "{\"text\":\"你好!四月纪念日\",\"styles\":[{\"fill\":{\"content\":{\"solid\":{\"color\":[0,0,0]}}},\"font\":{\"path\":\"C:/Users/xueya/AppData/Local/JianyingPro/User Data/Cache/effect/349323/9bfde9a789862114b6055ed475688908/港风繁体-方正粗宋繁体.TTF\",\"id\":\"6740438140432945675\"},\"size\":15,\"range\":[0,8]}]}",
        // ...
        "font_title": "港风繁体",
        "font_url": "",
        "fonts": [
          {
            // ...
            "title": "港风繁体"
          }
        ],
        "force_apply_line_max_width": false,
        "global_alpha": 1.0,
        "group_id": "",
        "has_shadow": false,
        "id": "3S7JK59N-RQX1-SSN1-8OHN-43B3DB2C81SR",
        // ...
        "underline_offset": 0.22,
        "underline_width": 0.05,
        "use_effect_default_color": true,
        "words": { "end_time": [], "start_time": [], "text": [] }
      }
    ],
    "time_marks": [ // 时间标记
      {
        "id": "FDC0B380-9D03-4664-9106-913D638C88FB",
        "mark_items": [
          {
            "color": "#00c1cd",
            "id": "0BA279FC-663B-4503-AE26-9AF671D0135D",
            "time_range": { "duration": 0, "start": 12433333 },
            "title": "标记 22"
          }
        ]
      }
    ],
    "transitions": [],
    "video_effects": [],
    "video_trackings": [
    ],
    "videos": [ // 视频/图片 素材
      {
        "height": 720,
        "id": "OXV8JDZM-MXZN-0CH2-M67G-IS5SF427KKQ8",
        // ...
        "matting": {
          "flag": 0,
          "has_use_quick_brush": false,
          "has_use_quick_eraser": false,
          "interactiveTime": [],
          "path": "/data/user/0/com.lemon.lv/files/matting/51d4da7a11e3dfe7c941f73b498bf548",
          "strokes": [ // 智能抠图相关

          ]
        },
        "media_path": "",
        "object_locked": null,
        "origin_material_id": "",
        "path": "##_draftpath_placeholder_0E685133-18CE-45ED-8CB8-2904A212EC80_##/videos/51d4da7a11e3dfe7c941f73b498bf548.jpg",
        // ...
        "team_id": "",
        "type": "photo",
        "width": 1280
      }
    ],
    "vocal_beautifys": [],
    "vocal_separations": [
    ]
  },
  "mutable_config": null,
  "name": "0807-13",
  "new_version": "110.0.0",
  "platform": {
  },
  "tracks": [ // 轨道
    {
      "attribute": 1,
      "flag": 0,
      "id": "AHNM9H31-3G7H-FAJ6-G9OQ-PY16LQVT4WLW",
      "is_default_name": false,
      "name": "",
      "segments": [ // 轨道内部的 segment, 通常 segment 通过 material_id 指向对应的素材,如 materials.videos, materials.audios 。。
        {
          "caption_info": null,
          "cartoon": false,
          "clip": {
            "alpha": 1.0,
            "flip": { "horizontal": false, "vertical": false },
            "rotation": 0.0,
            "scale": { "x": 0.89187235, "y": 0.89187235 },
            "transform": { "x": 0.0, "y": 0.0 }
          },
          "common_keyframes": [ // 关键帧动画相关内容

          ],
          "extra_material_refs": [ // 引用的其余资源,包含 动画、速度、等
            "20N5HL6M-UPMS-XUDE-RXSC-65NQPGGX8DLG",
            "KFABYM74-RWME-46D2-64W8-FJAOP32A09VH",
            "GM4J9Q4G-Y668-0TP2-F5I0-ZTLYSZ1ELZWK",
            "XGR0QNRR-OIYI-47AX-Y8B8-QGIGXMTSJ8TA",
            "76722AA5-B96E-436a-B2E6-936B497D2B64",
            "A629BE59-59C7-475c-ADBC-9759B8D10BBE"
          ],
          "id": "EKP1NKPG-WDG6-Q2WE-Z477-TMB3T7TLDKMB",
          "material_id": "OXV8JDZM-MXZN-0CH2-M67G-IS5SF427KKQ8",
          // ...
          "uniform_scale": { "on": true, "value": 1.0 },
          "visible": true,
          "volume": 0.0
        }
      ],
      "type": "video"
    }
  ],
  "update_time": 1659854708418,
  "version": 360000
}

1.3 基于 draft_content.json 的自动化处理工具

通常基于Python框架都会使用 pyJianYingDraft 来进行生成和编辑操作。实际上就是操作1.2节的 JSON数据。

例如:在开始视频前三秒显示一个封面:就是 增加一个 track, 内部包含一个 segment,然后 segment 指向 materials.videos[] 中的一个元素,这个元素的类型是 photo,然后素材的 path 指向实际的文件,其中 ##_draft_...## 是特殊标志,代表草稿文件的相对路径。

上述操作直接使用 pyJianYingDraft 可以通过 add_video 接口,或者方法可以直接设置。免去了 JSON 操作的复杂度。

但是 pyJianYingDraft 只能够支持JSON明文加载/生成草稿JSON。无法生成加密后的文件。

FAQ:pyJianYingDraft 生成的 json 可以在高版本打开吗?答:可以,但是会进行实时加密,从而将无法再次利用工具/框架进行修改。

1.4 经过加密后的 draft_content.json

B1D8NLpFhHJ2gb9/3cPBDhJ1zGVe0UUFjBIa6Mrn27BCTcX2FJCih.....

虽然是 draft_content.json 文件,但是实际上已经是经过加密的字符串了,同时 draft_meta_info.json 也是经过了加密的文件。

2. 如何处理

2.1 始终确保剪辑5.9以下

如果是普通使用,不涉及到内容的自动处理,直接升级就行了。

如果是进行自动化生成、批量处理等操作,就始终确保 5.9 版本就行了。

2.2 如何意外升级了

如果意外升级了,那么需要寻找相应的工具来进行恢复。如果是必须要恢复,则需要知识付费,查询相关的工具或者能力。

目前已知的功能都是进行恢复,恢复的方案是有的,可以联系老张来进行知识付费。

3. 参考文档